Top-n-Box (шкала Лайкерта) по факторным группам в кадре данных - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть следующий фрейм данных, который является результатом кластерного анализа с десятью 7-значными шкалами отношения для конкретных преимуществ продукта (см. Столбец «переменная»).При этом n - это число лиц, указывающих конкретное значение для каждого преимущества, а сумма - это общая сумма людей для каждого кластера.n2 - это просто относительная доля ответов на все ответы в кластере (n2 = n / cum * 100, что в основном%).

Теперь я хочу создать новый столбец, агрегирующий / суммирующий top-n (указано в столбце «значение») процентов (указано в n2) для каждого пособия , например, новый столбец «Вверх»-3-Box ", например, со значением 46,5 для строк 1-7 / Benefit.1 (которое представляет собой сумму n2 строк со значением top-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

Я высоко ценю вашу поддержку!

1 Ответ

0 голосов
/ 21 декабря 2018

Мы можем сделать группу с помощью sum из 'n2' путем поднабора значений, соответствующих первому 3 'значению'

library(dplyr)
df1 %>% 
    group_by(cluster, variable) %>% 
    mutate(percent = sum(n2[value %in% 1:3]))

Если «значение» уже orderEd для «кластера», «переменная», то мы можем просто подмножество «n2»

df1 %>% 
    group_by(cluster, variable) %>% 
    mutate(percent = sum(n2[1:3]))
...