Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取ID';R中数据帧的s,并将描述列中的文本粘贴到具有匹配ID的所有行中';s_R_Matching - Fatal编程技术网

获取ID';R中数据帧的s,并将描述列中的文本粘贴到具有匹配ID的所有行中';s

获取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")

我在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
如前所述,来自其他行的匹配文本不必位于“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