gpt4 book ai didi

r - 发生 NA 后,如何删除组内的观察结果?

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

我正在尝试清理我的数据。其中一个标准是我需要一个不间断的可变“ Assets ”序列,但我有一些 NA。但是,我不能简单地删除 NA 观察,而是需要删除 NA 事件之后的所有后续观察。

这里有一个例子:

productreference<-c(1,1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,5,5)
Year<-c(2000,2001,2002,2003,1999,2000,2001,2005,2006,2007,2008,1998,1999,2000,2000,2001,2002,2003)
assets<-c(2,3,NA,2,34,NA,45,1,23,34,56,56,67,23,23,NA,14,NA)
mydf<-data.frame(productreference,Year,assets)
mydf

# productreference Year assets
# 1 1 2000 2
# 2 1 2001 3
# 3 1 2002 NA
# 4 1 2003 2
# 5 2 1999 34
# 6 2 2000 NA
# 7 2 2001 45
# 8 3 2005 1
# 9 3 2006 23
# 10 3 2007 34
# 11 3 2008 56
# 12 4 1998 56
# 13 4 1999 67
# 14 4 2000 23
# 15 5 2000 23
# 16 5 2001 NA
# 17 5 2002 14
# 18 5 2003 NA

我已经看到有一种方法可以使用 plyr 按组执行功能,并且我还能够创建一个 0-1 的列,其中 0 表示 Assets 具有有效条目,1 突出显示 NA 的缺失值。
mydf$missing<-ifelse(mydf$assets>=0,0,1)
mydf[c("missing")][is.na(mydf[c("missing")])] <- 1

我有一个非常大的数据集,因此无法手动删除行,非常感谢您的帮助!

最佳答案

我相信这就是你想要的:

library(dplyr)
group_by(mydf, productreference) %>%
filter(cumsum(is.na(assets)) == 0)
# Source: local data frame [11 x 3]
# Groups: productreference [5]
#
# productreference Year assets
# (dbl) (dbl) (dbl)
# 1 1 2000 2
# 2 1 2001 3
# 3 2 1999 34
# 4 3 2005 1
# 5 3 2006 23
# 6 3 2007 34
# 7 3 2008 56
# 8 4 1998 56
# 9 4 1999 67
# 10 4 2000 23
# 11 5 2000 23

关于r - 发生 NA 后,如何删除组内的观察结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37846373/

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