gpt4 book ai didi

使用 R 中的条件从列表中的每个数据框中删除行

转载 作者:行者123 更新时间:2023-12-02 08:24:45 27 4
gpt4 key购买 nike

我有这样一个列表:

df1 <- data.frame(a=c(NA, NA, 1:10), b=c(NA, 1:11))
df2 <- data.frame(a=1:10, b=c(NA,1:9))
mylist <- list(df1, df2)

> mylist
[[1]]
a b
1 NA NA
2 NA 1
3 1 2
4 2 3
5 3 4
6 4 5
7 5 6
8 6 7
9 7 8
10 8 9
11 9 10
12 10 11

[[2]]
a b
1 1 NA
2 2 1
3 3 2
4 4 3
5 5 4
6 6 5
7 7 6
8 8 7
9 9 8
10 10 9

我想删除每个数据框中连续超过 1 个 NA 的所有行。我该怎么做?

我找到了如何删除行

lapply(mylist, `[`, -1,)

以及如何计算NA的总和

NAsums <- function(x) {rowSums(is.na(x))}
lapply(mylist, NAsums)

但我不知道如何将这两个步骤结合起来..

最佳答案

我们遍历 list ( lapply ), 使用 rowSums获取每行中 NA 元素的数量,转换为逻辑向量 ( <2 ),并使用它对行进行子集化。

lapply(mylist, function(x) x[rowSums(is.na(x))<2,])
#[[1]]
# a b
#2 NA 1
#3 1 2
#4 2 3
#5 3 4
#6 4 5
#7 5 6
#8 6 7
#9 7 8
#10 8 9
#11 9 10
#12 10 11

#[[2]]
# a b
#1 1 NA
#2 2 1
#3 3 2
#4 4 3
#5 5 4
#6 6 5
#7 7 6
#8 8 7
#9 9 8
#10 10 9

关于使用 R 中的条件从列表中的每个数据框中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33301267/

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