Как рассчитать процентное соотношение столбца данных в R с условием? - PullRequest
0 голосов
/ 09 марта 2020

Я хотел бы узнать, как рассчитать процент столбца на основе условия.

Моя таблица выглядит следующим образом:

url    | call_count 
-------|-----------
bbc.com| 1
bbc.com| 1
bbc.com| 1
bbc.com| 1
ao.com | 0
ab.com | 2

Я хотел бы сгруппировать таблицу по url column и вычислить новый столбец с именем "percent_calling" - это основано на условии, согласно которому значение столбца call_count больше 0 , затем рассчитайте его как процент от значения всего столбца - это в основном просто% вызова, если значение> 0, так как> 0 означает, что они сделали вызов.

В настоящее время я застрял в том, как сделать это с помощью dplyr, самое близкое, что у меня есть, это:

df %>% 
group_by(url) %>% 
summarise(percent_calling = sum(call_count)/nrow(df)) 

, но, как вы можете видеть, я не могу добавить условие, т.е. call_count> 0

1 Ответ

1 голос
/ 10 марта 2020

Ваши данные:

df<-data.frame(
  stringsAsFactors = FALSE,
               url = c("bbc.com","bbc.com",
                       "bbc.com","bbc.com","ao.com","ab.com"),
        call_count = c(1, 1, 1, 1, 0, 2)
)

Вам подходит следующее?

df%>%
  group_by(url)%>%
  summarise(sum_calling = sum(call_count))%>%
  mutate(percent_calling=sum_calling/sum(sum_calling)*100)%>%
  select(-sum_calling) # remove the sum if not required
 url     percent_calling
  <chr>             <dbl>
1 ab.com             33.3
2 ao.com              0  
3 bbc.com            66.7
...