我在R中有一个数据框,其中有3列:ID(可能重复,可能重复),代码和描述。我需要创建一个代码段,该代码段使用该数据帧返回一个具有相同行数的数据帧,其中每一行都有一个ID,一个代码以及与原始DF中的该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
如前所述,来自其他行的匹配文本不必在“ descriptiontest”列中,添加列即可。
你能帮助我吗?
这是一种快速而肮脏的方法。我确定会有其他人采用单行方法。:)
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句