gpt4 book ai didi

从数据框中删除所有值为 NA、NULL 或空的列

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

这个问题在这里已经有了答案:





R: Remove multiple empty columns of character variables

(9 个回答)


4年前关闭。




我有一个数据框,其中一些值为 NULL 或 Empty。我要删除 这些栏目 其中所有值 .
列应该从数据框中删除,不要只隐藏。

我的头(df)看起来像数据=

  VAR1  VAR2  VAR3   VAR4  VAR5  VAR6  VAR7
1 2R+ 52 1.05 0 0 30
2 2R+ 169 1.02 0 0 40
3 2R+ 83 NA 0 0 40
4 2R+ 98 1.16 0 0 40
5 2R+ 154 1.11 0 0 40
6 2R+ 111 NA 0 0 15

数据框包含 200 多个变量,变量为空且零值不会按顺序出现。

我试图估计平均 Col 并选择列为 Null 或空,类似于删除“NA”(参见 here ),但它不起作用。
df <- df[,colSums(is.na(df))<nrow(df)]

我收到一个错误:'x' 必须是一个至少有两个维度的数组

任何人都可以给我一些帮助吗?谢谢!

最佳答案

我们可以使用 Filter

Filter(function(x) !(all(x=="")), df)
# Var1 Var3
#1 2R+ 52
#2 2R+ 169
#3 2R+ 83
#4 2R+ 98
#5 2R+ NA
#6 2R+ 111
#7 2R+ 94
#8 2R+ 116
#9 2R+ 86

注意:如果特定列的所有元素都是 NA,它也应该有效
df$Var3 <- NA
Filter(function(x) !(all(x=="")), df)
# Var1
#1 2R+
#2 2R+
#3 2R+
#4 2R+
#5 2R+
#6 2R+
#7 2R+
#8 2R+
#9 2R+

更新

根据更新后的数据集,如果我们需要删除只有0值的列,那么将代码改为
Filter(function(x) !(all(x==""|x==0)), df2)
# VAR1 VAR3 VAR4 VAR7
#1 2R+ 52 1.05 30
#2 2R+ 169 1.02 40
#3 2R+ 83 NA 40
#4 2R+ 98 1.16 40
#5 2R+ 154 1.11 40
#6 2R+ 111 NA 15

数据
df2 <- structure(list(VAR1 = c("2R+", "2R+", "2R+", "2R+", "2R+", "2R+"
), VAR2 = c("", "", "", "", "", ""), VAR3 = c(52L, 169L, 83L,
98L, 154L, 111L), VAR4 = c(1.05, 1.02, NA, 1.16, 1.11, NA), VAR5 = c(0L,
0L, 0L, 0L, 0L, 0L), VAR6 = c(0L, 0L, 0L, 0L, 0L, 0L), VAR7 = c(30L,
40L, 40L, 40L, 40L, 15L)), .Names = c("VAR1", "VAR2", "VAR3",
"VAR4", "VAR5", "VAR6", "VAR7"), row.names = c("1", "2", "3",
"4", "5", "6"), class = "data.frame")

关于从数据框中删除所有值为 NA、NULL 或空的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41894268/

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