2013-04-27 34 views
8

Heres dữ liệu của tôi:Thêm một hàng mới ở vị trí cụ thể trong một dataframe

> data 
    Manufacturers  Models 
1 Audi    RS5 
2 BMW     M3 
3 Cadillac   CTS-V 
4 Lexus    ISF 

tôi muốn thêm 1 hàng ở hàng thứ tư, như thế này:

> data 
    Manufacturers  Models 
1 Audi    RS5 
2 BMW     M3 
3 Cadillac   CTS-V 
4 Benz    C63 
5 Lexus    ISF 

tôi đã cố gắng sử dụng rbind() như sau:

Benz = data.frame(Manufacturers = "Benz", Models = "C63") 
newdata = rbind(data,Benz) 

Nhưng tôi không thể thêm vào địa điểm tôi muốn. Tôi sẽ đánh giá cao bất kỳ trợ giúp nào về câu hỏi này. Cảm ơn rất nhiều.

+0

thể trùng lặp của [R: Chèn một vectơ dưới dạng một hàng trong data.frame] (http://stackoverflow.com/questions/3651198/r-insert-a-vector-as-a-row-in-data-frame) – Roland

Trả lời

2

Nếu đơn đặt hàng là một tính năng quan trọng của tập dữ liệu thì bạn nên mã hóa nó theo cách an toàn, ví dụ: bằng cách sử dụng biến chỉ mục. Tôi sẽ không dựa vào rownames hoặc thứ tự của các hàng data.frame vì có các hoạt động mà chúng không được bảo tồn.

data <- read.table(text="Manufacturers  Models 
1 Audi    RS5 
2 BMW     M3 
3 Cadillac   CTS-V 
4 Lexus    ISF",header=TRUE) 

data$ind <- seq_len(nrow(data)) 
data <- rbind(data,data.frame(Manufacturers = "Benz", Models = "C63",ind=3.1)) 
data <- data[order(data$ind),] 

# Manufacturers Models ind 
# 1   Audi RS5 1.0 
# 2   BMW  M3 2.0 
# 3  Cadillac CTS-V 3.0 
# 5   Benz C63 3.1 
# 4   Lexus ISF 4.0 
+2

Điểm được lấy về tên hàng, nhưng cách tiếp cận tên hàng tương tự như của bạn sẽ là 'rbind (dữ liệu," 3.1 "= data.frame (Nhà sản xuất =" Benz ", Models =" C63 "))' (không tạo cột "ind"). Tất nhiên, sắp xếp lại vẫn là bắt buộc, nhưng một bước được lưu :) – A5C1D2H2I1M1N2O1R2T1

4

Trong trường hợp bạn không muốn chỉ số mà là một one-off "sửa chữa nhanh chóng" cho một số xuất hiện bảng giống như, bạn có thể dùng đến

newData <- rbind(data[1:3,], Benz, data[ 4,]) 
Các vấn đề liên quan