Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于另一列索引R组合来自不同数据帧的不同列_R_Merge_Dataframe - Fatal编程技术网

基于另一列索引R组合来自不同数据帧的不同列

基于另一列索引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,

所以我有三个数据帧,我们称它们为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,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”
告诉它这样做。