0

我知道这是一个非常简单的问题,但我对 R 还是很陌生。

如果我有两张这样的桌子

id = c(1,2,3,4,5,6)
cost = c(11,22,33,44,55,66)
name =c("aa","bb","cc","dd","ee","ff")

tableone = cbind (id, cost)
tabletwo = cbind(name,id)

如何将正确的名称(如在 tabletwo 中)添加到带有成本的 tableone?实际上,table1 复杂得多,有多个重复项等。

4

1 回答 1

1

这是使用 data.table 包的一种方法:

加载包:

library(data.table)

按照定义的方式加载向量:

id <- c(1,2,3,4,5,6)
cost <- c(11,22,33,44,55,66)
name <- c("aa","bb","cc","dd","ee","ff")

将向量转换为单列数据表:

id.dt<-data.table(id)
setnames(id.dt,"id")

cost.dt<-data.table(cost)
setnames(cost.dt,"cost")

name.dt<-data.table(name)
setnames(name.dt,"name")

合并列,设置一个键(此示例可能不需要,但我包含它只是为了显示:

tableone.dt<-cbind(id.dt,cost.dt)
setkey(tableone.dt,id)
tabletwo.dt<-cbind(name.dt,id.dt)
setkey(tabletwo.dt,id)

合并表:

merge(tableone.dt,tabletwo.dt)

当然,这是一种迂回的做法。如果它适合您的需求,您可以轻松简化流程。例如:

simple.table <- data.table("id"=c(1,2,3,4,5,6),"cost"=c(11,22,33,44,55,66),"name"=name <- c("aa","bb","cc","dd","ee","ff"))

或者托马斯的评论会起作用。另外,请参阅由 flodel 评论的链接。

于 2013-05-08T13:49:03.493 回答