2012-10-26 36 views
7

Tôi có thông tin được chứa trong vector, ví dụ:Làm cách nào để thêm dữ liệu theo cột trong tệp csv bằng R?

sequence1<-seq(1:20) 
sequence2<-seq(21:40) 
... 

Tôi muốn nối thêm dữ liệu vào một tập tin, vì vậy tôi đang sử dụng:

write.table(sequence1,file="test.csv",sep=",",append=TRUE,row.names=FALSE,col.names=FALSE) 
write.table(sequence2,file="test.csv",sep=",",append=TRUE,row.names=FALSE,col.names=FALSE) 

Nhưng vấn đề là đây là thêm vào tất cả trong một cột như:

1 
2 
3 
... 
21 
22 
... 
40 

tôi muốn thêm vào dữ liệu trong cột để nó kết thúc như:

1   21 
2   22 
3   23 
...  ... 
20  40 

Tôi có thể làm điều đó bằng cách sử dụng R như thế nào?

+2

Bạn không thể nối thêm cột vào tệp CSV. Bạn phải viết lại mỗi hàng mỗi lần bạn muốn thêm cột. Điều này không liên quan gì đến R; đó là cách tệp được lưu trữ trên đĩa. –

Trả lời

6

write.table ghi tệp dữ liệu hoặc ma trận vào tệp. Nếu bạn muốn viết một hai hai data.frame cột (hoặc ma trận) vào một tập tin sử dụng write.table, sau đó bạn cần phải tạo một đối tượng trong R

x <- data.frame(sequence1, sequence2) 
write.table(x, file = 'test.csv', row.names=FALSE,col.names=FALSE) 

Xem ?write.table cho một mô tả rất rõ ràng về những gì các chức năng làm.

Như đã nêu trong nhận xét của @ JoshuaUlrich, đây không thực sự là vấn đề R, bạn không thể nối thêm cột vào tệp csv do cách nó được lưu trữ trên đĩa.

7

Trong khi bạn không thể thêm cột trực tiếp trên tập tin, bạn có thể đọc nó thành một data.frame, gắn liền với các cột với nó, và viết kết quả dưới dạng tệp csv:

tmp <- read.csv("original_file.csv") 
tmp <- cbind(tmp, new_column) 
write.csv(tmp, "modified_file.csv") 
2

Nếu bạn muốn để ghi tệp như bạn đi (ví dụ: trong vòng lặp):

seq1<-t(seq(1,20,1)) 
seq2<-t(seq(21,40,1)) 

write.table(seq1,"test.csv",sep=",",append=TRUE,row.names=FALSE,col.names=FALSE) 
write.table(seq2,"test.csv",sep=",",append=TRUE,row.names=FALSE,col.names=FALSE) 

Sau đó, chuyển tệp ở cuối. Nếu bạn muốn làm điều đó tất cả cùng một lúc:

test<-t(rbind(seq1,seq2)) 
write.csv(test, "test.csv") 
2

Kiểm tra trên đoạn mã sau,

seq1 <- seq(1:20) 
seq2 <- seq(21:40) 
bind <- cbind(seq1,seq2) 
write.csv(bind,file = "Your_path", append = TRUE) 

này trình Mã.

Các vấn đề liên quan