gpt4 book ai didi

r - 删除部分NA值的行和列

转载 作者:行者123 更新时间:2023-12-04 13:47:55 25 4
gpt4 key购买 nike

我有以下数据框(s):

s<-read.table(text = "V1    V2  V3  V4  V5  V6  V7  V8  V9  V10 
1 0 62 64 44 NA 55 81 66 57 53
2 0 0 65 50 NA 56 79 69 52 55
3 0 0 0 57 NA 62 84 76 65 59
4 0 0 0 0 NA 30 70 61 41 36
5 0 0 0 0 NA NA NA NA NA NA
6 0 0 0 0 0 0 66 63 51 44
7 0 0 0 0 0 0 0 80 72 72
8 0 0 0 0 0 0 0 0 68 64
9 0 0 0 0 0 0 0 0 0 47
10 0 0 0 0 0 0 0 0 0 0 ", header = TRUE)

可以看出,在这种情况下,第5行和第5列仅包含 NA0值。我想省略它们,并保持行和列的顺序。在相同的模式下可能会有更多的列和行,我想做同样的事情。数据框的大小可能会更改。
最终结果将是:
    V1  V2  V3  V4  V6  V7  V8  V9  V10 
1 0 62 64 44 55 81 66 57 53
2 0 0 65 50 56 79 69 52 55
3 0 0 0 57 62 84 76 65 59
4 0 0 0 0 30 70 61 41 36
6 0 0 0 0 0 66 63 51 44
7 0 0 0 0 0 0 80 72 72
8 0 0 0 0 0 0 0 68 64
9 0 0 0 0 0 0 0 0 47
10 0 0 0 0 0 0 0 0 0

有没有办法获取省略的行和列号(在本例中为5)?

最佳答案

我们能试试

v1 <- colSums(is.na(s))
v2 <- colSums(s==0, na.rm=TRUE)
j1 <- !(v1>0 & (v1+v2)==nrow(s) & v2 >0)

v3 <- rowSums(is.na(s))
v4 <- rowSums(s==0, na.rm=TRUE)
i1 <- !(v3>0 & (v3+v4)==ncol(s) & v3 >0)
s[i1, j1]
# V1 V2 V3 V4 V6 V7 V8 V9 V10
#1 0 62 64 44 55 81 66 57 53
#2 0 0 65 50 56 79 69 52 55
#3 0 0 0 57 62 84 76 65 59
#4 0 0 0 0 30 70 61 41 36
#6 0 0 0 0 0 66 63 51 44
#7 0 0 0 0 0 0 80 72 72
#8 0 0 0 0 0 0 0 68 64
#9 0 0 0 0 0 0 0 0 47
#10 0 0 0 0 0 0 0 0 0

假设我们更改“s”中的值之一
 s$V7[3] <- NA

通过运行上面的代码,输出将是
#   V1 V2 V3 V4 V6 V7 V8 V9 V10
#1 0 62 64 44 55 81 66 57 53
#2 0 0 65 50 56 79 69 52 55
#3 0 0 0 57 62 NA 76 65 59
#4 0 0 0 0 30 70 61 41 36
#6 0 0 0 0 0 66 63 51 44
#7 0 0 0 0 0 0 80 72 72
#8 0 0 0 0 0 0 0 68 64
#9 0 0 0 0 0 0 0 0 47
#10 0 0 0 0 0 0 0 0 0

注意:OP的条件是 ,仅包含NA和0值。我想省略他们

关于r - 删除部分NA值的行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36873377/

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