功能交叉粘贴逐列

时间:2017-08-11 06:21:19

标签: r paste

一个data.frame D1有3行和3个colmuns,如下所示:

C1 C2 C3
a  x  1 
b  y  2
c  z  3

我希望D1将其列彼此粘贴,就像:

a_x a_1 x_1
b_y b_2 y_2
c_z c_z z_3

我怎样才能有效地获得这个新的数据帧。

1 个答案:

答案 0 :(得分:1)

我们可以使用combn

D1[] <- combn(D1, 2, FUN = function(x) paste(x[,1], x[,2], sep="_"))
D1
#   C1  C2  C3
#1 a_x a_1 x_1
#2 b_y b_2 y_2
#3 c_z c_3 z_3

数据

D1 <- structure(list(C1 = c("a", "b", "c"), C2 = c("x", "y", "z"), 
C3 = 1:3), .Names = c("C1", "C2", "C3"), class = "data.frame", 
 row.names = c(NA, -3L))