计算每列中的非零值 tidyverse
我有一个带有一堆站点和一堆变量的 df 。我需要计算每个站点的非零值的数量。我觉得我应该能够使用 summarize()
和 count()
或 tally()
来做到这一点,但不太清楚它出来了。
代表:
df <-
tribble(
~variable, ~site1, ~site2, ~site3,
"var1", 0 , 1, 0,
"var2", .5, 0, 0,
"var3", .1, 2, 0,
"var4", 0, .8, 1
)
# does not work:
df %>%
summarise(across(where(is.numeric), ~ count(.x>0)))
期望的输出:
# A tibble: 1 × 3
site1 site2 site3
<dbl> <dbl> <dbl>
1 2 3 1
I have a df with a bunch of sites and a bunch of variables. I need to count the number of non-zero values for each site. I feel like I should be able to do this with summarize()
and count()
or tally()
, but can't quite figure it out.
reprex:
df <-
tribble(
~variable, ~site1, ~site2, ~site3,
"var1", 0 , 1, 0,
"var2", .5, 0, 0,
"var3", .1, 2, 0,
"var4", 0, .8, 1
)
# does not work:
df %>%
summarise(across(where(is.numeric), ~ count(.x>0)))
desired output:
# A tibble: 1 × 3
site1 site2 site3
<dbl> <dbl> <dbl>
1 2 3 1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一个可能的解决方案:
基本R中的另一种可能的解决方案:
A possible solution:
Another possible solution, in base R:
在基本R中,您可以使用
colsums
:In base R, you can use
colSums
:这是另一个使用
purrr
的tidyverse
选项:或者使用
data.table
的选项:Here is another
tidyverse
option usingpurrr
:Or an option using
data.table
: