3

大家好,我正在使用 R 中具有相同变量名称的数据框列表。接下来是列表的结构,我只包含五个元素以使其可重现,但列表中可以包含 20 多个元素:

list

$a1 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A

$a2 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A
00007   A

$a3 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A
00007   A
00008   B

$a4 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A
00007   A
00008   B
00009   C

$a5 
ID      G
00001   A
00002   A
00003   B
00004   C
00005   D
00006   A
00007   A
00008   B
00009   C
00010   D

其中元素的名称是a1a2a3和。当我合并所有元素时,我的问题就开始了,因为我无法确定合并变量之间的差异。例如,我申请下一个代码来合并它: 我得到了这个a4a5listMerged=Reduce(function(x, y) merge(x, y,all.x=T,by=1),list)Merged

ID     G.x  G.y G.x G.y G
00001   A   A   A   A   A
00002   A   A   A   A   A
00003   B   B   B   B   B
00004   C   C   C   C   C
00005   D   D   D   D   D
00006   A   A   A   A   A

这个警告:

Warnings:
1: In merge.data.frame(x, y, all.x = T, by = 1) :
  column names ‘G.x’, ‘G.y’ are duplicated in the result
2: In merge.data.frame(x, y, all.x = T, by = 1) :
  column names ‘G.x’, ‘G.y’ are duplicated in the result

合并很好,但我无法区分合并变量,因为它们具有相同的名称。我想区分它们,例如第一个g.x是 group from a1,第一个g.y是 group from a2,第二个g.x是 group from a3,第二个g.y是 group froma4g是 group from a5。考虑到它的来源,我想有所不同g,我想要这样的结构:

    ID     G.1  G.2 G.3 G.4 G.5
    00001   A   A   A   A   A
    00002   A   A   A   A   A
    00003   B   B   B   B   B
    00004   C   C   C   C   C
    00005   D   D   D   D   D
    00006   A   A   A   A   A

很明显,我可以与每个数据框不同,G或者至少我想要一些我可以做出这种改变的东西。谢谢你的帮助。

4

1 回答 1

1

setNames这将非常方便......

setNames( Merged , c( "ID" , names( list ) ) )
#     ID a1 a2 a3 a4 a5
#1 00001  A  A  A  A  A
#2 00002  A  A  A  A  A
#3 00003  B  B  B  B  B
#4 00004  C  C  C  C  C
#5 00005  D  D  D  D  D
#6 00006  A  A  A  A  A
于 2013-11-09T17:27:21.233 回答