[英]In R how to combine multiple string columns in an R dataframe into one list column
我正在尝试将数据框中的多个字符串列组合成一个包含多个元素的列表。
以下是一些示例数据:
Df =
Note1 Note2 Note3 OtherStuff
“do” na “re” 54
“fa” “so” “ti” na
“mi” “do” na 10
我想要的是:
DF =
Note1 Note2 Note3 OtherStuff Notes1_3
“do” na “re” 54 c(“do”, na, “re”)
“fa” “so” “ti” na c(“fa”, “so”, “ti”)
“mi” “do” na 10 c(“mi”, “do, na)
我按照另一个 Stackoverflow Q&A 中的建议尝试了以下代码:
DF %>%
mutate(Notes1_3 = mapply(c, Note1, Note2, Note3)
对于 dataframe 中的所有行,这导致 Notes1_3 等于 NULL。 这看起来应该很容易做到,我只是错过了一些细节。
如果您希望Notes1_3
成为标题中的列表列,则只需将其变成列表,而不是向量:
df <- structure(list(Note1 = c("“do”", "“fa”", "“mi”"),
Note2 = c("na", "“so”", "“do”"), Note3 = c("“re”",
"“ti”", "na"), OtherStuff = c("54", "na", "10")), class = "data.frame", row.names = c(NA,
-3L))
df
Note1 Note2 Note3 OtherStuff
1 “do” na “re” 54
2 “fa” “so” “ti” na
3 “mi” “do” na 10
df2 <- df %>%
mutate(Notes1_3 = list(Note1, Note2, Note3))
df2
Note1 Note2 Note3 OtherStuff Notes1_3
1 “do” na “re” 54 “do”, “fa”, “mi”
2 “fa” “so” “ti” na na, “so”, “do”
3 “mi” “do” na 10 “re”, “ti”, na
如果我们专门查看该列,我们会看到它实际上是所需的向量列表:
df2$Notes1_3
[[1]]
[1] "“do”" "“fa”" "“mi”"
[[2]]
[1] "na" "“so”" "“do”"
[[3]]
[1] "“re”" "“ti”" "na"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.