如何制作R中多变量(未交叉)的加权频率表?

如何制作R中多变量(未交叉)的加权频率表?,r,R,我有一个包含很多变量和两个加权列的数据框 scale1 <- c(5,NA,2,1) scale2 <- c(NA,4,NA,3) scale3 <- c(3,NA,5,NA) scale4 <- c(2,1,NA,5) df<- data.frame(scale1,scale2,scale3,scale4) df > df v1 v2 v3 weight1 weight2 1 1 1 0 0.5 1.1 2 1 0 0

我有一个包含很多变量和两个加权列的数据框

scale1 <- c(5,NA,2,1)
scale2 <- c(NA,4,NA,3)
scale3 <- c(3,NA,5,NA)
scale4 <- c(2,1,NA,5)
df<- data.frame(scale1,scale2,scale3,scale4)
df
> df
  v1 v2 v3 weight1 weight2
1  1  1  0     0.5     1.1
2  1  0  0     0.5     1.1
3  0  1  0     1.2     0.3
4  0  0  0     1.2     0.3
> 
然而,我想为数据中的许多变量生成加权频率表,但我不想像这段代码那样交叉它们

count(df, v1, v2, wt = weight1 * weight2)
我想为每个变量创建一个表,如下代码所示。但是我不想一个接一个地写它们,因为在我的实际数据框架中有很多变量

count(df, v1, wt = weight1 * weight2)
count(df, v2, wt = weight1 * weight2)
count(df, v3, wt = weight1 * weight2)
此外,我正在尝试立即将表导出为CSV文件


是否有一种有效的方法来生成表格并导出为CSV?

如果您想将其应用于所有非
weight1 | 2

cols%
绑定行->df
df
n变量值
1 0.72 v1 0
2 1.10 v1
3 0.91 v2 0
4 0.91 v2 1
5 1.82 v3 0
编辑纯dplyr方式
df%>%
#按所有其他列分组\u默认情况下按分组列计数
分组依据(跨越(!以(“重量”)开始)%>%
#举重计数
计数(wt=weight1*weight2)%>%
#转向更长的格式
枢轴长度(!n)%>%
#按名称和值分组
分组依据(名称、值)%>%
#总结事件
总结(n=总和(n))
#一个tible:5 x 3
#分组:名称[3]
名称值n
1 v10 0.72
2 v1.1
3 v20.91
4 v2 1 0.91
5 v3 0 1.82
count(df, v1, wt = weight1 * weight2)
count(df, v2, wt = weight1 * weight2)
count(df, v3, wt = weight1 * weight2)
# A tibble: 5 x 3
# Groups:   name [3]
  name  value     n
  <chr> <int> <dbl>
1 v1        0  0.72
2 v1        1  1.1 
3 v2        0  0.91
4 v2        1  0.91
5 v3        0  1.82