基于另一列索引R组合来自不同数据帧的不同列
所以我有三个数据帧,我们称它们为a,b,c 在每个数据帧中,有称为1、2、3、4的列,包含54175行数据 列1的id名称在每个数据帧中相同,但顺序不一定相同 第2、3、4列只是数值 我想根据第1列的ID从第2列中取出a、b、c的所有信息,这样a、b、c的每个值都将与正确的ID相关 我试过类似的东西基于另一列索引R组合来自不同数据帧的不同列,r,merge,dataframe,R,Merge,Dataframe,所以我有三个数据帧,我们称它们为a,b,c 在每个数据帧中,有称为1、2、3、4的列,包含54175行数据 列1的id名称在每个数据帧中相同,但顺序不一定相同 第2、3、4列只是数值 我想根据第1列的ID从第2列中取出a、b、c的所有信息,这样a、b、c的每个值都将与正确的ID相关 我试过类似的东西 m1 <- merge(A[,'2'], b[,'2'], c[,2'], by='1') 谢谢你的帮助 您必须一次合并两个: a<-data.frame(sample(1:100,
m1 <- merge(A[,'2'], b[,'2'], c[,2'], by='1')
谢谢你的帮助 您必须一次合并两个:
a<-data.frame(sample(1:100,100),100*runif(100),100*runif(100),100*runif(100))
colnames(a)<-1:4
b<-data.frame("C1"=sample(1:100,100),"C2"=100*runif(100),"C3"=100*runif(100),"C4"=100*runif(100))
colnames(b)<-1:4
c<-data.frame("C1"=sample(1:100,100),"C2"=100*runif(100),"C3"=100*runif(100),"C4"=100*runif(100))
colnames(c)<-1:4
f<-merge(a[,1:2],b[,1:2],by=(1))
f<-merge(f,c[,1:2],by=(1))
colnames(f)<-c(1,"A2","B2","C2")
head(f)
1 A2 B2 C2
1 1 54.63326 39.23676 28.10989
2 2 10.10024 56.08021 69.44268
3 3 45.02948 14.69028 22.44243
4 4 90.50883 33.61303 98.00917
5 5 13.80767 80.93382 77.22679
6 6 80.72241 27.22139 51.34516
a您必须一次合并两个:
a<-data.frame(sample(1:100,100),100*runif(100),100*runif(100),100*runif(100))
colnames(a)<-1:4
b<-data.frame("C1"=sample(1:100,100),"C2"=100*runif(100),"C3"=100*runif(100),"C4"=100*runif(100))
colnames(b)<-1:4
c<-data.frame("C1"=sample(1:100,100),"C2"=100*runif(100),"C3"=100*runif(100),"C4"=100*runif(100))
colnames(c)<-1:4
f<-merge(a[,1:2],b[,1:2],by=(1))
f<-merge(f,c[,1:2],by=(1))
colnames(f)<-c(1,"A2","B2","C2")
head(f)
1 A2 B2 C2
1 1 54.63326 39.23676 28.10989
2 2 10.10024 56.08021 69.44268
3 3 45.02948 14.69028 22.44243
4 4 90.50883 33.61303 98.00917
5 5 13.80767 80.93382 77.22679
6 6 80.72241 27.22139 51.34516
a耦合问题:
- “合并”一次只能工作两次,不能再工作了
- 您需要在合并的data.frames中有
by
列
如下所示修复这些问题:
m1 <- merge(A[,c("1", "2")], B[,c("1", "2")])
m2 <- merge(m1, C[, c("1", "2")])
m1耦合问题:
- “合并”一次只能工作两次,不能再工作了
- 您需要在合并的data.frames中有
by
列
如下所示修复这些问题:
m1 <- merge(A[,c("1", "2")], B[,c("1", "2")])
m2 <- merge(m1, C[, c("1", "2")])
m1您可以使用merge
两次:
merge(merge(a[1:2], b[1:2], by = "1"), c[1:2])
或使用合并减少:
Reduce(function(...) merge(..., by = "1"), list(a[1:2], b[1:2], c[1:2]))
您可以使用merge
两次:
merge(merge(a[1:2], b[1:2], by = "1"), c[1:2])
或使用合并减少:
Reduce(function(...) merge(..., by = "1"), list(a[1:2], b[1:2], c[1:2]))
我认为回答这个问题最简单的方法是:
m1 <- merge(A[,'2'], b[,'2'], c[,2'], by='1')
m1我认为回答这个问题最简单的方法是:
m1 <- merge(A[,'2'], b[,'2'], c[,2'], by='1')
m1不同ID的数量是否等于行的数量?首先是列名或列索引。你说“1”是什么意思?而且,我认为你需要一次做两次。从?合并:“合并两个数据帧…”。我认为它不能同时适用于三个。更大的问题是,by
列需要位于合并的data.frames中。当您将A[,'2']
赋予merge
时,merge
只会看到名为“2”
的列,因此不可能通过by=“1”
告诉它这样做。不同ID的数量是否等于行的数量?First by应该是列名或列索引。你说“1”是什么意思?而且,我认为你需要一次做两次。从?合并:“合并两个数据帧…”。我认为它不能同时适用于三个。更大的问题是,by
列需要位于合并的data.frames中。当您将A[,'2']
赋予merge
时,merge
只会看到名为“2”
的列,因此不可能通过=“1”
告诉它这样做。