将整个数据框合并/折叠成 R 中的单个列
Merge/ Collapse entire data frame into a single column in R
输入数据框可以有不同的列数。
输出数据框应该只有一列,它是输入数据框中所有可用列的串联。
示例:输入
╔══════╦══════╗
║ a ║ b ║
╠══════╬══════╣
║blue ║ 5636 ║
║red ║ 148 ║
║yellow║ 101 ║
║green ║ 959 ║
╚══════╩══════╝
期望的输出
╔═══════════╗
║ a-b ║
╠═══════════╣
║blue-5636 ║
║red-148 ║
║yellow-101 ║
║green-959 ║
╚═══════════╝
此示例有 2 列,输入数据框可以有任意数量的列,因此解决方案不应要求列名。
我试过使用转换,但这需要指定列。
outputDF=transform(inputDF,xyz=paste0(inputDF[,1],'-',inputDF[,2]))
有没有一种方法可以将所有输入列折叠成一个由“-”分隔的列
我们可以使用do.call
v1 <- do.call(paste, c(inputDF, list(sep='-')))
v2 <- paste(names(inputDF), collapse='-')
setNames(data.frame(v1),v2)
# a-b
#1 blue-5636
#2 red-148
#3 yellow-101
#4 green-959
输入数据框可以有不同的列数。 输出数据框应该只有一列,它是输入数据框中所有可用列的串联。
示例:输入
╔══════╦══════╗
║ a ║ b ║
╠══════╬══════╣
║blue ║ 5636 ║
║red ║ 148 ║
║yellow║ 101 ║
║green ║ 959 ║
╚══════╩══════╝
期望的输出
╔═══════════╗
║ a-b ║
╠═══════════╣
║blue-5636 ║
║red-148 ║
║yellow-101 ║
║green-959 ║
╚═══════════╝
此示例有 2 列,输入数据框可以有任意数量的列,因此解决方案不应要求列名。
我试过使用转换,但这需要指定列。
outputDF=transform(inputDF,xyz=paste0(inputDF[,1],'-',inputDF[,2]))
有没有一种方法可以将所有输入列折叠成一个由“-”分隔的列
我们可以使用do.call
v1 <- do.call(paste, c(inputDF, list(sep='-')))
v2 <- paste(names(inputDF), collapse='-')
setNames(data.frame(v1),v2)
# a-b
#1 blue-5636
#2 red-148
#3 yellow-101
#4 green-959