我想知道,如何将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
立即提供帮助将不胜感激。
提前致谢
答案 0 :(得分:2)
我们可以将paste
与do.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是逗号