我想计算数据帧中的零。
计算我正在使用的 NA
mtcars %>% group_by(cyl) %>% summarise_each(funs(sum(is.na(.))))
Run Code Online (Sandbox Code Playgroud)
返回
# A tibble: 3 × 11
cyl mpg disp hp drat wt qsec vs am gear carb
<dbl> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1 4 0 0 0 0 0 0 0 0 0 0
2 6 0 0 0 0 0 0 0 0 0 0
3 8 0 0 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我怎么能做类似的事情
mtcars %>% group_by(cyl) %>% summarise_each(funs(sum(identical(.,0)))
Run Code Online (Sandbox Code Playgroud)
达到相同的结果但计数零而不是 NAs?
因为.在这种情况下将是一个向量,您可以只使用逻辑测试,sum因为TRUE被视为 1 并且FALSE是 0。
mtcars %>%
group_by(cyl) %>%
summarise_each(funs(sum(.==0)))
cyl mpg disp hp drat wt qsec vs am gear carb
(dbl) (int) (int) (int) (int) (int) (int) (int) (int) (int) (int)
1 4 0 0 0 0 0 0 1 3 0 0
2 6 0 0 0 0 0 0 3 4 0 0
3 8 0 0 0 0 0 0 14 12 0 0
Run Code Online (Sandbox Code Playgroud)
我们也可以在 base R
aggregate(.~cyl, mtcars, FUN = function(x) sum(x==0))
# cyl mpg disp hp drat wt qsec vs am gear carb
#1 4 0 0 0 0 0 0 1 3 0 0
#2 6 0 0 0 0 0 0 3 4 0 0
#3 8 0 0 0 0 0 0 14 12 0 0
Run Code Online (Sandbox Code Playgroud)
或与 rowsum
rowsum(+(mtcars[-2]==0), group = mtcars$cyl)
# mpg disp hp drat wt qsec vs am gear carb
#4 0 0 0 0 0 0 1 3 0 0
#6 0 0 0 0 0 0 3 4 0 0
#8 0 0 0 0 0 0 14 12 0 0
Run Code Online (Sandbox Code Playgroud)
或与 data.table
library(data.table)
as.data.table(mtcars)[, lapply(.SD, function(x) sum(x==0)) , cyl]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4696 次 |
| 最近记录: |