Как суммировать проценты строки на основе другого значения строки в R - PullRequest
0 голосов
/ 30 марта 2019

Мой набор данных состоит из китов.У меня есть две переменные: nclicks и процентов.nclicks - это количество кликов в вызове (от 3 до 30).Процент относится к частоте, с которой этот тип звонка был сделан в данном году.Я хотел бы суммировать проценты для более длинных вызовов (те, у которых 11+ кликов) и добавить новую строку в фрейм данных, которая имеет 11+ для nclicks и суммированный процент для процентов.Затем я хочу удалить строки, из которых состоит новая строка.

Я пробовал кодировать «nclicks» как фактор и число.Я использовал комбинации aggregate, rowSums, rbind и т. Д., Но безуспешно.Самое близкое, что я получил, - это получение новой строки с суммированными процентами, но мне пришлось указать, какие строки включать вручную (см. Пример ниже).Этот метод также суммировал значения nclicks (поэтому в моем примере ниже я получаю новую строку с 43 (11 + 12 + 20) в nclicks и 20 в процентах, когда я действительно хочу, чтобы номер строки был 4, nclicks был 11+ и процентами будет 20).

nclicks=c(3,4,5,11,12,20) 

percent=c(30,30,20,10,5,5) 

df=data.frame(cbind(nclicks,percent)) 

df["11+",]=df["4",]+df["5",]+df["6",] 

df=df[-c(4,5,6), ] 

df

Вот что я получаю в итоге:

 nclicks percent
1         3      30
2         4      30
3         5      20
11+      43      20

Я хочу суммировать проценты строк, для которых значение nclicks равно> 10, но у меня возникли проблемы с выполнением этого.Я не хочу отдельно указывать, какие значения nclicks включать, потому что в некоторых годах много разных значений nclick> 10, а в некоторых годах только несколько разных значений> 10.

1 Ответ

0 голосов
/ 31 марта 2019

Вы можете создать столбец group, чтобы упростить агрегирование строк, где nclicks>=11.

library("tidyverse")

nclicks <- c(3, 4, 5, 11, 12, 20)
percent <- c(30, 30, 20, 10, 5, 5)

df <- tibble(nclicks, percent)
df <- df %>%
  mutate(group = ifelse(nclicks >= 11, "11+", nclicks)) %>%
  group_by(group) %>%
  summarise_at(vars(nclicks, percent), sum)
df
#> # A tibble: 4 x 3
#>   group nclicks percent
#>   <chr>   <dbl>   <dbl>
#> 1 11+        43      20
#> 2 3           3      30
#> 3 4           4      30
#> 4 5           5      20

Создано в 2019-03-31 пакетом Представления (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...