在R中,我有一个数据帧(mydf
),如下所示:
weight | Q1 | Q2 |
---|---|---|
100 | 1 | 0 |
200 | 0 | 1 |
250 | NA | 1 |
387 | 1 | 0 |
(但有100列(全部为二进制Q3、Q4等)和2000行).
我正在try 编写一个循环,这样我就可以获得每列中每个二进制值的权重总和.
因此,例如,我希望输出如下所示:
Q1 | Q1.weight | Q2 | Q2.weight |
---|---|---|---|
1 | 487 | 1 | 450 |
0 | 200 | 0 | 487 |
我已经写了一个循环来完成这个任务,它将结果保存到一个空的嵌套框(empty_df
)中.它写道:
questions <- c("Q1", "Q2")
for (i in questions) {
empty_df[[paste0(i, "")]] <- aggregate(weight ~ mydf[[paste0(i, "")]], data = mydf, FUN = sum)
}
这会生成正确的值,但会给出奇怪的列名.它给我的输出是:
Q1$mydf[[paste0(i, "")]] | Q1$weight | Q2$mydf[[paste0(i, "")]] | Q2$weight |
---|---|---|---|
1 | 487 | 1 | 450 |
0 | 200 | 0 | 487 |
我try 了一系列不同的方法来正确命名列,并try 使用gSub删除$
和"mydf[[paste0(i, "")]]"
,但似乎都不起作用.
任何关于如何用正确的列创建输出的 idea 都将不胜感激--预先感谢您的帮助!