3

こんにちは、私は R で同じ変数名を持つデータ フレームのリストを扱っています。リストの構造は次のとおりです。再現可能にするために 5 つの要素のみを含めますが、リストには 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

要素の名前はa1a2a3a4およびa5です。マージされた変数間の違いを確立できないため、すべての要素をマージすると問題が発生します。たとえば、list次のコードに適用してマージします Merged=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はグループからa1、最初g.yはグループからa2、2番目g.xはグループからa3、2番目g.yはグループからa4、そしてgグループから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 に答える