我想知道,如何用逗号分隔符在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
请立即提供帮助。
提前感谢
我们可以将paste
与do.call
一起使用。注意,即使paste
有100列,下面的代码也会自动执行,而不必痛苦地提及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"))))
或使用tidyr
中的unite
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
我建议使用带有","分隔符的粘贴函数。
df$Colors<-paste(df$Red, df$Blue, df$Green, sep =",")
您可以通过使用tidyr
包中的unite
函数来实现这一点:
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
我会将数据复制到excel中,添加一个带值的列,并添加一个formulas=A1&D1&B1&D1&C1
A、 B,C是列,D是逗号