将整个数据框合并/折叠到R中的单个列中

时间:2015-11-27 08:24:59

标签: r transformation

输入数据框可以有不同数量的列。 输出数据帧应该只有一列,它是输入数据帧中所有可用列的串联。

示例:输入

╔══════╦══════╗
║ 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]))

有没有办法可以将所有输入列折叠到由' - '

分隔的单个列中

1 个答案:

答案 0 :(得分:3)

我们可以使用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