如何计算有条件的R中数据帧列的百分比



我想了解如何根据条件计算列的百分比。

我的桌子是这样的:

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

您的数据:

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

最新更新