r语言 - 数据帧中按因子组排列的顶部 n-Box(李克特量表)



我有以下数据帧,这是针对特定产品益处的十个 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]))

最新更新