gpt4 book ai didi

r - 如何删除带有 NA 和 NA 之后的行?

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

我有一些数据,我想在这些数据中删除 NA 以及 NA 之后的某个因子级别的数据。

删除 NA 很容易:

df <- data.frame(a=c("A","A","A","B","B","B","C","C","C","D","D","D"), b=c(0,1,0,0,0,0,0,1,0,0,0,1) ,c=c(4,5,3,2,1,5,NA,5,1,6,NA,2))
df
newdf<-df[complete.cases(df),];newdf

最终结果应该删除 C 的所有行和 D 的最后两行。

希望能帮到你。

最佳答案

我们可以试试data.table。将'data.frame'转换为'data.table'(setDT(df)),按'a'分组,得到'c'中NA元素逻辑向量的累加和,判断是否子集小于1

library(data.table)
setDT(df)[, .SD[cumsum(is.na(c))<1], by= a]

或者使用 的更快选项。I 返回逻辑向量的行索引并对行进行子集化。

setDT(df)[df[, .I[cumsum(is.na(c)) < 1], by = a]$V1]
# a b c
#1: A 0 4
#2: A 1 5
#3: A 0 3
#4: B 0 2
#5: B 0 1
#6: B 0 5
#7: D 0 6

关于r - 如何删除带有 NA 和 NA 之后的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41223034/

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