r - 如何计算每个类别中的非零值

标签 r dplyr data.table across

这是我的数据

df <- structure(list(team_3_F = c("team ", "team ", "site", "site", 
"team ", "team ", "newyorkish", "newyorkish", "team ", "team ", 
"newyorkish", "newyorkish", "browingal ", "browingal ", "site", 
"site", "browingal ", "browingal ", "browingal ", "browingal ", 
"team ", "team ", "team ", "team ", "team ", "team ", "team ", 
"team ", "team ", "team ", "site", "site", "browingal ", "browingal ", 
"browingal ", "browingal ", "browingal ", "browingal ", "browingal ", 
"browingal ", "browingal ", "browingal ", "team ", "team ", "team ", 
"team ", "newyorkish", "newyorkish", "browingal ", "browingal ", 
"newyorkish", "newyorkish", "browingal ", "browingal ", "team ", 
"team ", "browingal ", "browingal ", "team "), name = c("AAA_US", 
"BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", 
"AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", 
"BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", 
"AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", 
"BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", 
"AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", 
"BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", 
"AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", "BBB_US", "AAA_US", 
"BBB_US", "AAA_US"), value = c(0L, 0L, 0L, 8L, 1L, 0L, 11L, 0L, 
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 45L, 
0L, 0L, 0L, 18L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 2L, 0L, 3L, 
0L, 2L, 0L, 2L, 1L, 0L, 4L, 0L, 88L, 0L, 0L, 1L, 5L, 0L, 0L, 
0L, 0L, 0L, 0L, 1L, 19L)), row.names = c(NA, -59L), class = "data.frame")

我正在尝试识别每个组的非零值,因此我应该有这样的输出

browingal   AAA_US  1
browingal   BBB_US  7
newyorkish  AAA_US  4
newyorkish  BBB_US  0
site        AAA_US  0
site        BBB_US  1
team        AAA_US  6
team        BBB_US  0

我试图对其进行分类,但我无法弄清楚

df %>% group_by(name) %>% summarise_each(function(x) min(x[x != 0]),value)

最佳答案

data.table 的另一个选项:

library(data.table)
dt <- data.table(df)

dt[, sum(value != 0), by = c("team_3_F", "name")]

     team_3_F   name V1
1:      team  AAA_US  6
2:      team  BBB_US  0
3:       site AAA_US  0
4:       site BBB_US  1
5: newyorkish AAA_US  4
6: newyorkish BBB_US  0
7: browingal  AAA_US  1
8: browingal  BBB_US  7

关于r - 如何计算每个类别中的非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71272730/

相关文章:

r - 使用 dplyr 按组计算行数

r - dplyr 使用 t.test 汇总多个列

r - 从 data.frame 或 data.table 构建方形邻接矩阵

r - 在 R 中分解多个日期的观察结果

R 无法识别 GhostScript 以嵌入 eps 图

R:自动扩展VIM::aggr图中的边距

r - 如何在 dplyr 中提取一个特定组

R 通过函数调用传递 data.table 参数

r - data.table 和 "by must evaluate to list"错误

FindCorrelation 中需要 R、TRUE/FALSE