如果我们将值分散在R数据帧的多个列中,则需要将它们组合并创建一个列,这种组合过程称为串联。值的分散性大多发生在数据没有正确格式化为要加载到R中的情况下。因此,要解决此分散性问题,我们需要使用apply函数。
考虑以下数据帧-
x1<-rpois(20,5) y1<-rpois(20,5) z1<-rpois(20,5) a1<-rpois(20,5) df1<-data.frame(x1,y1,z1,a1) df1输出结果
x1 y1 z1 a1 1 3 2 1 8 2 5 2 5 8 3 9 4 1 4 4 3 4 4 4 5 5 4 4 4 6 6 5 5 3 7 5 5 5 6 8 7 3 6 4 9 5 7 6 8 10 3 3 4 5 11 7 4 4 8 12 4 3 2 4 13 6 3 6 6 14 7 5 3 1 15 6 9 8 3 16 9 6 11 6 17 5 5 6 6 18 2 4 4 9 19 1 8 2 4 20 11 4 4 2
通过串联df1所有列中的值在df1中创建新列-
df1$all<-apply(df1,1,paste,collapse="") df1输出结果
x1 y1 z1 a1 all 1 3 2 1 8 3218 2 5 2 5 8 5258 3 9 4 1 4 9414 4 3 4 4 4 3444 5 5 4 4 4 5444 6 6 5 5 3 6553 7 5 5 5 6 5556 8 7 3 6 4 7364 9 5 7 6 8 5768 10 3 3 4 5 3345 11 7 4 4 8 7448 12 4 3 2 4 4324 13 6 3 6 6 6366 14 7 5 3 1 7531 15 6 9 8 3 6983 16 9 6 11 6 96116 17 5 5 6 6 5566 18 2 4 4 9 2449 19 1 8 2 4 1824 20 11 4 4 2 11442
x2<-sample(LETTERS[1:4],20,replace=TRUE) y2<-sample(LETTERS[1:4],20,replace=TRUE) z2<-sample(LETTERS[1:4],20,replace=TRUE) df2<-data.frame(x2,y2,z2) df2输出结果
x2 y2 z2 1 D D C 2 D D C 3 C D A 4 D D D 5 A C B 6 A D A 7 B B D 8 B C A 9 D A C 10 A A B 11 B D D 12 A D C 13 D C C 14 C A B 15 A D A 16 A D C 17 D C A 18 A B B 19 D A C 20 D B C
通过串联df2的所有列中的值在df2中创建新列-
df2$all<-apply(df2,1,paste,collapse="") df2输出结果
x2 y2 z2 all 1 D D C DDC 2 D D C DDC 3 C D A CDA 4 D D D DDD 5 A C B ACB 6 A D A ADA 7 B B D BBD 8 B C A BCA 9 D A C DAC 10 A A B AAB 11 B D D BDD 12 A D C ADC 13 D C C DCC 14 C A B CAB 15 A D A ADA 16 A D C ADC 17 D C A DCA 18 A B B ABB 19 D A C DAC 20 D B C DBC