如何使用 R 在 csv 文件中按列添加数据?

Posted

技术标签:

【中文标题】如何使用 R 在 csv 文件中按列添加数据?【英文标题】:How to add data by columns in csv file using R? 【发布时间】:2012-10-16 06:34:42 【问题描述】:

我有包含在向量中的信息,例如:

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

我想将该数据附加到文件中,所以我正在使用:

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)

但问题是这些都添加在一列中,例如:

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

我想在列中添加该数据,以便它最终如下:

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

我如何使用 R 来做到这一点?

【问题讨论】:

您不能将列附加到 CSV 文件。每次要添加列时,都必须重新编写每一行。这与 R 无关;这就是文件在磁盘上的存储方式。 【参考方案1】:

检查以下代码,

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

此代码有效。

【讨论】:

【参考方案2】:

如果你想边写边写文件(例如在循环中):

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)

然后在最后转置文件。 如果您想一次完成所有操作:

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

【讨论】:

【参考方案3】:

虽然您不能直接在文件中添加列,但您可以将其读入 data.frame,附加到列中,并将结果写入 csv 文件:

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

【讨论】:

【参考方案4】:

write.table 将 data.frame 或矩阵写入文件。如果你想要两个使用write.table将两列data.frame(或矩阵)写入文件,那么你需要在R中创建这样一个对象

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

请参阅?write.table,以非常清楚地说明该函数的作用。

正如@JoshuaUlrich 的评论所述,这并不是真正的R 问题,由于它在磁盘上的存储方式,您不能将列附加到 csv 文件中。

【讨论】:

以上是关于如何使用 R 在 csv 文件中按列添加数据?的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中按列分组以获得总计数

如何通过使用 R 将每个文件的数据添加为附加行来将不同的 .csv 文件组合成一个完整的文件?

在R中按列合并数字和字符?

在R中按列匹配ID附加列

如何使用 agggrid 导出为 csv 功能为 excel 文件数据添加边框?

到 csv 的 2D 列表 - 按列