【发布时间】:2018-04-04 19:18:10
【问题描述】:
我想构建一个特定的函数,它将整个数据框中不同列组合的行求和。
示例 - 我有一个数据框,其中第一个描述性列和 20 个列(v1、v2、v3、...)从 1 到 20,其中只有可能的值是 1 或 0。我想要一个函数,我可以根据特定出现对列中的值求和。如果将每个示例函数设置为 3,那么我需要将前 3 列(v1、v2 和 v3)汇总到第一个新创建的变量(v1s)中,然后将接下来的 3 列汇总在一起(v2、v3、 v4) 在下一个新创建的变量 (v2s) 等中。
可重现的例子:
set.seed(300)
db <- matrix(sample(0:1,5*20, replace=TRUE),5,20)
us <- c("A","B","C","D","E")
db <- as.data.frame(cbind(us,db))
所以我想控制定义我想要总结多少列(通过控制我的意思是每个示例将其更改为 5 列应该不难)。在 3 列的情况下,我想创建 18 个附加变量(从第一个到最后一个 3 个变量的所有连续组合),其中包含 3 列的行总和。
我尝试了几个选项,但是我真的想不出简单的方法来做到这一点。我正在考虑一个函数,它将列数作为输入,然后对值进行行求和并遍历所有组合,但是我无法破解这个。请帮忙!
【问题讨论】:
-
cbind(us, db)不幸地创建了一个矩阵,其中所有值都被强制转换为字符。db <- cbind(us, as.data.frame(db))保留整数值。
标签: r function dataframe multiple-columns apply