我有以下数据框,该数据框是针对十个7-李克特态度量表进行聚类分析以实现特定产品收益的结果(请参阅“变量”列)。在此,n是为每个福利陈述特定值的人数,总和是每个集群的总人数。 n2只是每个群集中所有答案的相对答案份额(n2 = n / cum * 100,基本上是%)。
现在,我想创建一个新列,汇总/汇总前n个(在“值”列中表示)百分比(在n2中表示) 每个 好处,例如新列“ Top-3-Box”,例如行1-7 / Benefit.1的值为46.5(这是前3个值分别为7,6,5的行的n2之和)。如有解决方案,那将很好,它可以立即在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
非常感谢您的支持!
答案 0 :(得分:0)
我们可以通过对与前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]))