2016-05-03 3 views
2

私は3つの列:ID(おそらく繰り返す可能性があります)、コードと説明を持つRのデータフレームを持っています。私は、そのデータフレームを使用して、各行が1つのID、1つのコード、および元のDFのそのIDに関連付けられているすべての説明を持つ同じ数の行を持つデータフレームを返すコードセグメントを作成する必要があります列またはペーストされたテキストを持つ単一の列、どちらも問題ありません)。RでデータフレームのIDを取得し、説明列のテキストをIDと一致するすべての行に貼り付けます

ので、例えば、私は次のようなデータフレームDFがあります

IDstest <- c(1:5,5:1,3,4,1) 
codestest <- c("X1","Z1","C1","X1","X2","J9","A","Y1","Z2","C5","A","P2","Z") 
descriptiontest <- c("Desc 1","Desc 2","Test","Just typing randomly","Desc 4","Desc 5","Desc 1","Random","Desc ZZZ","Desc 1","YYY","XYZ","Desc 4","Test") 

df <- data.frame(IDstest, codestest, descriptiontest) 
df 

    IDstest codestest  descriptiontest 
1  1  X1    Desc 1 
2  2  Z1    Desc 2 
3  3  C1     Test 
4  4  X1 Just typing randomly 
5  5  X2    Desc 4 
6  5  J9    Desc 5 
7  4   A    Desc 1 
8  3  Y1    Random 
9  2  Z2    Desc ZZZ 
10  1  C5    Desc 1 
11  3   A     YYY 
12  4  P2     XYZ 
13  1   Z    Desc 4 

をそして私はと似たような受け取りたい:前述のように

 IDstest codestest     descriptiontest 
1  1  X1   Desc 1; Desc 1; Desc 4 
2  2  Z1     Desc 2; Desc ZZZ 
3  3  C1     Test; Random; YYY 
4  4  X1 Just typing randomly; Desc 1; XYZ 
5  5  X2     Desc 4; Desc 5 
6  5  J9     Desc 5; Desc 4 
7  4   A Desc 1;Just typing randomly; XYZ 
8  3  Y1     Random; Test; YYY 
9  2  Z2     Desc ZZZ; Desc 2 
10  1  C5   Desc 1; Desc 1; Desc 4 
11  3   A     YYY; Test; Random 
12  4  P2 XYZ; Just typing randomly; Desc 1 
13  1   Z   Desc 4; Desc 1; Desc 1 

を、他の行から一致するテキストはdoesnの'descriptiontest'列にある必要があります。列を追加すると問題ありません。

私を助けることができますか?

答えて

1

これはすばやく汚い方法です。私は他の誰かがラップ一列の方法で来ると確信しています。 :)

IDstest <- c(1:5,5:1,3,4,1) 
codestest <- c("X1","Z1","C1","X1","X2","J9","A","Y1","Z2","C5","A","P2","Z") 
descriptiontest <- c("Desc 1","Desc 2","Test","Just typing randomly","Desc 4","Desc 5","Desc 1","Random","Desc ZZZ","Desc 1","YYY","XYZ","Desc 4") 

df <- data.frame(IDstest, codestest, descriptiontest) 

uniqueIDs <- unique(df[,"IDstest"]) 
mergedescription <- rep("", length(uniqueIDs)) 
for(i in uniqueIDs) { 
    mergedescription[i] <- paste(df[IDstest == i, "descriptiontest"], collapse = "; ") 
} 

mdf <- data.frame(IDstest = uniqueIDs, mergedescription) 

final.df <- merge(df, mdf) 

これは、副作用としてIDstestでレコードをソートします。

IDstest codestest  descriptiontest     mergedescription 
1  1  X1    Desc 1   Desc 1; Desc 1; Desc 4 
2  1  C5    Desc 1   Desc 1; Desc 1; Desc 4 
3  1   Z    Desc 4   Desc 1; Desc 1; Desc 4 
4  2  Z1    Desc 2     Desc 2; Desc ZZZ 
5  2  Z2    Desc ZZZ     Desc 2; Desc ZZZ 
6  3  C1     Test     Test; Random; YYY 
7  3  Y1    Random     Test; Random; YYY 
8  3   A     YYY     Test; Random; YYY 
9  4  X1 Just typing randomly Just typing randomly; Desc 1; XYZ 
10  4   A    Desc 1 Just typing randomly; Desc 1; XYZ 
11  4  P2     XYZ Just typing randomly; Desc 1; XYZ 
12  5  J9    Desc 5     Desc 4; Desc 5 
13  5  X2    Desc 4     Desc 4; Desc 5 
関連する問題