[英]add count of zeros by group using dplyr
我有一個非常大的數據框架,我需要根據列評估中超過50個可用行和少於10個零值的品牌進行篩選。 我用dplyr
可重復的例子
library(dplyr)
library(magrittr)
df <- data.frame(brand=c("Advert","Advert","Bass","Bass","Bass"),
date=c("2019-07-15","2019-08-15","2018-01-01","2018-02-15","2015-01-10"),
valuation=c(0,1,0,1,1))
# What I have reached so far...
df %>% dplyr::add_count(brand) %>% group_by(brand) %>% add_count(valuation==0)
> df %>% dplyr::add_count(brand) %>% group_by(brand) %>% add_count(valuation==0)
# A tibble: 5 x 6
# Groups: brand [2]
brand date valuation n `valuation == 0` nn
<fct> <fct> <dbl> <int> <lgl> <int>
1 Advert 2019-07-15 0 2 TRUE 1
2 Advert 2019-08-15 1 2 FALSE 1
3 Bass 2018-01-01 0 3 TRUE 1
4 Bass 2018-02-15 1 3 FALSE 2
5 Bass 2015-01-10 1 3 FALSE 2
我將使用列“n”來過濾超過50行的品牌,但請注意列“nn”中的預期結果應為:
1
1
1
1
1
事實上,我需要按品牌組計算零值的比例,但我堅持按品牌計算零
不要將add_count
用於第二個標准。 你可以直接使用sum
。
df %>%
dplyr::add_count(brand) %>%
group_by(brand) %>%
mutate(nn = sum(valuation == 0))
無需添加n
和nn
列進行過濾。 您可以直接filter
如下:
df %>%
group_by(brand) %>%
filter(n()>50,sum(valuation==0)<10)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.