获取ID';R中数据帧的s,并将描述列中的文本粘贴到具有匹配ID的所有行中';s
我在R中有一个数据帧,它有3列:ID(可能重复)、代码和描述。我需要创建一个代码段,该代码段使用该数据帧返回一个具有相同行数的数据帧,其中每行有一个ID、一个代码,以及原始DF中与该ID相关的所有描述(在不同的列中或粘贴文本的单列中,两者都可以) 例如,我有以下数据帧df:获取ID';R中数据帧的s,并将描述列中的文本粘贴到具有匹配ID的所有行中';s,r,matching,R,Matching,我在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")
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
如前所述,来自其他行的匹配文本不必位于“descriptiontest”列中,添加列就可以了
你能帮我吗?这是一种既快又脏的方法。我相信其他人会采用lappy单线法
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
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 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