gpt4 book ai didi

r - 使用 summarise_each() 计算忽略 NA 的记录

转载 作者:行者123 更新时间:2023-12-04 09:35:02 24 4
gpt4 key购买 nike

有没有办法使用summarise_each()计算数据框中的记录数,但忽略 NA ?

示例/样本数据

df_sample <- structure(list(var_1 = c(NA, NA, NA, NA, 1, NA), var_2 = c(NA, 
NA, NA, NA, 2, 1), var_3 = c(NA, NA, NA, NA, 3, 2), var_4 = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), var_5 = c(NA,
NA, NA, NA, 4, 3)), .Names = c("var_1", "var_2", "var_3", "var_4",
"var_5"), row.names = 5:10, class = "data.frame")

> df_samp
var_1 var_2 var_3 var_4 var_5
5 NA NA NA NA NA
6 NA NA NA NA NA
7 NA NA NA NA NA
8 NA NA NA NA NA
9 1 2 3 NA 4
10 NA 1 2 NA 3

使用 summarise_each()n()计算所有记录:
library(dplyr)
df_samp %>%
summarise_each(funs(n()))

## result:
var_1 var_2 var_3 var_4 var_5
1 6 6 6 6 6

我知道 n()不接受参数,因此我可以在 summarise_each() 中使用另一种方法吗?这将忽略 NA s 在统计记录数时,如果变量全部为 NA 则返回零?

想要的结果
   var_1 var_2 var_3 var_4 var_5
1 1 2 2 0 2

下面的方法让我在那里完成了一部分,但我也想为 var_4 返回 0 :
df_samp %>%
melt %>%
filter(!is.na(value)) %>%
group_by(variable) %>%
summarise(records = n())

## result:
variable records
1 var_1 1
2 var_2 2
3 var_3 2
4 var_5 2

最佳答案

尝试:

df_sample %>% summarise_all(funs(sum(!is.na(.))))

这使:
#  var_1 var_2 var_3 var_4 var_5
#1 1 2 2 0 2

关于r - 使用 summarise_each() 计算忽略 NA 的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31087055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com