我有以下数据帧,这是针对特定产品益处的十个 7 李克特态度量表进行聚类分析的结果(请参阅"变量"列)。此时,n是说明每项福利的具体值的人数,总和是每个类别的总人数。n2 只是每个聚类所有答案的相对份额(n2=n/cum*100,基本上是 %)。
现在,我想创建一个新列,聚合/汇总每个收益的前 n(在"值"列中指示)百分比(以 n2 表示),例如一个新列"Top-3-Box",例如第 1-7 行/Benefit.1 的值为 46.5(这是行的 n2 与前 3 个值 7,6,5 的总和)。如果有一个解决方案,那就太好了,它可以立即适用于 dplyr。
请参阅下面的数据框:
cluster variable value n cum n2
<int> <chr> <dbl> <int> <int> <dbl>
1 1 Benefit.1 1 11 86 12.8
2 1 Benefit.1 2 11 86 12.8
3 1 Benefit.1 3 6 86 7
4 1 Benefit.1 4 18 86 20.9
5 1 Benefit.1 5 16 86 18.6
6 1 Benefit.1 6 14 86 16.3
7 1 Benefit.1 7 10 86 11.6
8 1 Benefit.10 1 10 86 11.6
9 1 Benefit.10 2 13 86 15.1
10 1 Benefit.10 3 8 86 9.3
# ... with 40 more rows
非常感谢您的支持!
我们可以通过对对应于前 3 个"值"的值进行子集化来按 'n2' 的sum
进行分组
library(dplyr)
df1 %>%
group_by(cluster, variable) %>%
mutate(percent = sum(n2[value %in% 1:3]))
如果"值"已经按照"集群"、"变量"order
,那么我们可以只子集"n2">
df1 %>%
group_by(cluster, variable) %>%
mutate(percent = sum(n2[1:3]))