【问题标题】:Adding two columns from B to A and write new csv using R将两列从 B 添加到 A 并使用 R 编写新的 csv
【发布时间】:2014-02-28 18:24:01
【问题描述】:

我想根据一列将两个不同的 csv 文件合并为一个。两个 csv 数据集都有一列具有相同的描述(名称)。现在我想根据NAME 列将两列(POINT_XPOINT_Y)的内容从表 B 复制到表 A。

名称为“TestTestTest”的表A的每一行都应具有名称为“TestTestTest”的表B的对应值。

表A

FID | NAME| job | school | superma | traffic | fun | shopping | 

表B

FID | NAME| pop | POINT_X | POINT_Y | POINT_Z

我已经尝试过使用合并功能。

newdata = merge(TableA, TableB, all="TRUE")
write.csv(newdata, file = "merge.csv")

这可以以某种方式工作,但它会编写一个包含许多列的奇怪的新 .csv,这是我不想要的。我只想根据列 "NAME"

将列 "POINT_X""POINT_Y" 添加到 TableA

谢谢!

【问题讨论】:

  • 如果您能提供一些可重现的示例,即您的数据的子集,您可以快速、最好地获得答案

标签: r csv


【解决方案1】:

您仍然可以使用merge,但将tableB 传递到NAMEPOINT_XPOINT_Y 列:

newdata = merge(TableA, TableB[,c("NAME", "POINT_X", "POINT_Y")], all=TRUE)
write.csv(newdata, file = "merge.csv")

【讨论】:

  • 这正是我要找的:)
【解决方案2】:

合并仍然是最好的方法,您可以通过参数添加

newdata = merge(TableA, TableB, by="NAME",all="TRUE")

不过也可以这样实现

TableA$POINT_X<-TableB[match(TableB$NAME, TableA$NAME),"POINT_X"]
TableA$POINT_Y<-TableB[match(TableB$NAME, TableA$NAME),"POINT_Y"]

【讨论】:

  • 谢谢!第二种方式也很有帮助。
猜你喜欢
  • 1970-01-01
  • 2018-08-07
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多