如何使用逗号组合行内的值

时间:2016-04-13 04:53:30

标签: r rbind

我想知道,如何将R中数据框/列表中的列与逗号分隔符组合在一起。以下是样本数据集。

Name Red Blue Green 
Jack 4   5     3
John 5   6     4
Gen  3   7     1
Pra  4   6     2

预计会:

Name Colors
Jack 4,5,3
John 5,6,4
Gen  3,7,1
Pra  4,6,2

立即提供帮助将不胜感激。

提前致谢

4 个答案:

答案 0 :(得分:2)

我们可以将pastedo.call一起使用。请注意,即使您有100列到paste,下面的代码也会自动执行,而不必痛苦地提及paste(df1$Red, df1$blue, df1$Green, df1$Orange, etc..., sep=",")等。

newdf1 <- cbind(df1[1], Colors=do.call(paste, c(df1[-1], sep=",")))
newdf1
#  Name Colors
#1 Jack  4,5,3
#2 John  5,6,4
#3  Gen  3,7,1
#4  Pra  4,6,2

sprintf

的类似选项
cbind(df1[1], Colors=do.call(sprintf, c(df1[-1], list(fmt="%d,%d,%d"))))

unite

中的tidyr
library(dplyr)
library(tidyr)
df1 %>% 
    unite(Colors, Red:Green, sep=",")
#   Name Colors
#1 Jack  4,5,3
#2 John  5,6,4
#3  Gen  3,7,1
#4  Pra  4,6,2

答案 1 :(得分:1)

我建议粘贴功能使用&#34;,&#34;分离器。

df$Colors<-paste(df$Red, df$Blue, df$Green, sep =",")

答案 2 :(得分:0)

您可以使用 unite 包中的 tidyr 函数实现此目的:

tidyr::unite(df_test, Color, -Name, sep = ', ')

数据:

structure(list(Name = c("Jack", "John", "Gen", "Pra"), 
               Red = c(4L, 5L, 3L, 4L),
               Blue = c(5L, 6L, 7L, 6L),
               Green = c(3L, 4L, 1L, 2L)),
          class = "data.frame", 
          row.names = c(NA, -4L)) -> df_test

答案 3 :(得分:-4)

我会将数据复制到excel中,添加一个包含该值的列,然后添加一个公式= A1&amp; D1&amp; B1&amp; D1&amp; C1

A,B,C是列,D是逗号