我想了解如何根据条件计算列的百分比。
我的桌子是这样的:
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