如何在新列中的不同列中连接不同的值?

时间:2017-09-06 13:39:32

标签: r

假设我有这样的事情:

dat <- data.frame(ID = c("A", "B", "C"), 
                  value = c(1, 2, 3))

我想添加一个额外的列,其中我有一个这样的值: [A,1]

这将是一列,其中每个单值是“[”+ A(第一列中的值)+“,”+ B(第二列中的值)+“]”的串联。 我该怎么做?我尝试使用粘贴,但我做错了。

2 个答案:

答案 0 :(得分:2)

假设这是您的数据

dat <- data.frame(ID = c("A", "B", "C"), value = c(1, 2, 3))

这样可行

dat$concat <- paste0("[", dat$ID, ", ", dat$value, "]")

  ID value concat
1  A     1 [A, 1]
2  B     2 [B, 2]
3  C     3 [C, 3]

或者,如果你不想要逗号之后的空格:

dat$concat <- paste0("[", dat$ID, ",", dat$value, "]")

答案 1 :(得分:2)

这是一种与无穷无尽的列一致的方法:

dat$conc <- paste0("[",apply(dat,1,paste,collapse=","),"]")

使用您的示例:

dat <- data.frame(ID = c("A", "B", "C"), value = c(1, 2, 3))
dat$conc <- paste0("[",apply(dat,1,paste,collapse=","),"]")

给出:

  ID value  conc
1  A     1 [A,1]
2  B     2 [B,2]
3  C     3 [C,3]

或者,如果我们的数据框包含更多列:

dat <- data.frame(ID = c("A", "B", "C"), value = c(1, 2, 3), value2 = c(4, 5, 6))
dat$conc <- paste0("[",apply(dat,1,paste,collapse=","),"]")

给出:

  ID value value2    conc
1  A     1      4 [A,1,4]
2  B     2      5 [B,2,5]
3  C     3      6 [C,3,6]