Có cách nào để sử dụng summarise_each()
để đếm số lượng bản ghi trong một khung dữ liệu, nhưng bỏ qua NA
s?r - sử dụng summaryise_each() để đếm các bản ghi bỏ qua NA
Ví dụ/mẫu dữ liệu
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
Sử dụng summarise_each()
và n()
đếm tất cả các hồ sơ:
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
Tôi biết rằng n()
không chấp nhận lập luận, do đó là có một phương pháp khác tôi có thể sử dụng trong phạm vi summarise_each()
sẽ bỏ qua số NA
khi đếm số lượng bản ghi và sẽ trả về 0 nếu biến là al l NA
?
mong muốn Kết quả
var_1 var_2 var_3 var_4 var_5
1 1 2 2 0 2
Các phương pháp sau đây được tôi một phần của con đường đó, nhưng tôi cũng muốn trả lại một 0 cho var_4
:
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
Một cách phi 'dplyr' thể được 'colSums (! Is.na (df_sample))'. – Henrik