R 有没有办法计算NA';数据帧的每列中都有,但df被分成了不同的组?

R 有没有办法计算NA';数据帧的每列中都有,但df被分成了不同的组?,r,statistics,R,Statistics,我希望确定数据帧中每列中缺失值的比率,由该数据帧中的单独组分割 我对R很陌生,所以到目前为止我还没有取得多少成功。 下面是一个示例数据集来测试它: df <- data.frame( programme = c('A','B','B','A','B','C','C','C','C','A'), v1 = c(24,NA,NA,45,NA,23,22,23,45,23), v2 = c(NA,1,1,NA,0,1,1,1,1,NA), v3 = c(2,3,2,3,2,NA,

我希望确定数据帧中每列中缺失值的比率,由该数据帧中的单独组分割

我对R很陌生,所以到目前为止我还没有取得多少成功。 下面是一个示例数据集来测试它:

df <- data.frame(
  programme = c('A','B','B','A','B','C','C','C','C','A'),
  v1 = c(24,NA,NA,45,NA,23,22,23,45,23),
  v2 = c(NA,1,1,NA,0,1,1,1,1,NA),
  v3 = c(2,3,2,3,2,NA,NA,NA,NA,2))

df按“程序”分组,获得其他列中NA元素的
平均值,
聚集到“长”格式,并
分散到“宽”格式

library(tidyverse)
df %>% 
  group_by(programme) %>%
  summarise_all(funs(mean(is.na(.)))) %>% 
  gather(variables, val, -programme) %>% 
  spread(programme, val)
# A tibble: 3 x 4
#   variables     A     B     C
#   <chr>     <int> <int> <int>
#1 v1            0     1     0
#2 v2            1     0     0
#3 v3            0     0     1
库(tidyverse)
df%>%
组别(课程)%>%
总结所有(funs(平均值为na(%))>%
聚集(变量,val,-程序)%>%
价差(方案,val)
#一个tibble:3x4
#变量A B C
#          
#1v1010
#2v21000
#3 v3 0 1

我不明白您的输出如何是每列
NA
值的平均值。例如,在列
v1
中,它不应该是
0.3
res <- data.frame(
  variables = c('v1','v2','v3'),
  A = c(0.0, 1, 0.0),
  B = c(1, 0.0, 0.0),
  C = c(0.0, 0.0, 1)
)

  variables A B C
1        v1 0 1 0
2        v2 1 0 0
3        v3 0 0 1


library(tidyverse)
df %>% 
  group_by(programme) %>%
  summarise_all(funs(mean(is.na(.)))) %>% 
  gather(variables, val, -programme) %>% 
  spread(programme, val)
# A tibble: 3 x 4
#   variables     A     B     C
#   <chr>     <int> <int> <int>
#1 v1            0     1     0
#2 v2            1     0     0
#3 v3            0     0     1