gpt4 book ai didi

r - 有没有办法计算数据框每一列中 NA 的百分比,但将 df 分成不同的组?

转载 作者:行者123 更新时间:2023-12-01 23:07:42 24 4
gpt4 key购买 nike

我希望确定数据帧每一列中缺失值的比率,并按该数据帧中的不同组进行拆分。

我是 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))

我考虑过按组拆分数据框,然后为每一列应用一个函数,但这似乎行不通

per_missing <- data.frame()
df %>%
group_by(programme)
per_missing <- apply(df, 2, function(col)sum(is.na(col))/length(col))

理想情况下,该信息将被写入一个新的数据框,其中为每个组列出了每列的缺失率值。看起来像这样:

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


预先感谢您的帮助!

最佳答案

按'programme'分组,获取其他列中NA元素的meangather为'long'格式并spread返回到“宽”格式

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

关于r - 有没有办法计算数据框每一列中 NA 的百分比,但将 df 分成不同的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54751106/

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