【发布时间】:2018-12-18 12:12:25
【问题描述】:
我有 5 个数据帧,每个数据帧都有不同的行数。我需要根据每个数据帧的 col1 中的值将它们合并在一起。观察
df1 <- read.table(text="
col1 col2
A 5
B 3
C 6
E 7", header=TRUE, stringsAsFactors=FALSE)
df2 <- read.table(text="
col1 col2
A 5
B 6
C 7
M 8
Z 9", header=T, stringsAsFactors=FALSE)
但我需要它来生产:
newdf
col1 col2(#from df1) col3(#from df2)
A 5 5
B 3 6
C 6 7
E 7 0
M 0 8
Z 0 9
我曾尝试一次合并几个by='col1',但没有成功。有什么建议吗?
我尝试过的:
posidf<-merge(df1,df2,df3,df4,df5,all.x=TRUE)
#wont execute
posidf<-merge(df1,df2,df3,df4,df5,by="col1",all.x=TRUE)
#wont execute
posidf<-merge(df1,df2,df3,df4,df5,by="col1")
Error in fix.by(by.x, x) :
'by' must specify one or more columns as numbers, names or logical
【问题讨论】:
-
您的合并命令到底是什么样的? “无济于事”究竟是什么意思?你收到错误信息了吗?您是否得到了超出预期的输出?问题是缺少行吗?您是否尝试设置
all=参数? -
@MrFlick 已编辑。我也试过'all-'。 No Avail 意味着它没有成功。
-
merge()只需要两个 data.frames。你不能传入任意数量的它们吗?查看?merge帮助页面。您将不得不反复调用merge(merge(merge(a,b), c, d)之类的东西。您是否仅使用两个数据框进行了尝试,就像您在问题中实际包含的示例一样?