R 在任何列中使用NA(缺少值)子集所有行
我有一个数据集(teleco),有3000个OB,其中有许多(332)缺失值(NA)。当我试图将所有缺少的值子集到另一个数据帧中时,我奇怪地以3745 OB结束R 在任何列中使用NA(缺少值)子集所有行,r,na,R,Na,我有一个数据集(teleco),有3000个OB,其中有许多(332)缺失值(NA)。当我试图将所有缺少的值子集到另一个数据帧中时,我奇怪地以3745 OB结束 clean = na.omit(teleco) new = teleco[is.na(teleco[1:19])==TRUE, ] 清洁-2668个obs,共19个VAR 新-3745 obs,共19个VAR teleco-3000 obs,共19个VAR 我肯定我做错了什么。有人能帮忙吗?如果我们需要对至少有一个NA的行进行子集,我
clean = na.omit(teleco)
new = teleco[is.na(teleco[1:19])==TRUE, ]
清洁-2668个obs,共19个VAR
新-3745 obs,共19个VAR
teleco-3000 obs,共19个VAR
我肯定我做错了什么。有人能帮忙吗?如果我们需要对至少有一个
NA
的行进行子集,我们可以使用逻辑矩阵(is.NA(teleco)
)上的行和创建索引,并将其转换为逻辑向量(!=0
)
或者我们可以使用apply
和MARGIN=1
来创建逻辑向量
teleco[apply(is.na(teleco), 1, any),]
数据
set.seed(24)
teleco如果我们需要将至少有一个NA
的行子集,我们可以使用逻辑矩阵(is.NA(teleco)
)上的行和创建索引,并将其转换为逻辑向量(!=0
)
或者我们可以使用apply
和MARGIN=1
来创建逻辑向量
teleco[apply(is.na(teleco), 1, any),]
数据
set.seed(24)
teleco我更喜欢@akrun的解决方案,但这里有一个替代方案可以给出相同的结果:
teleco[unique(which(is.na(teleco), arr.ind=T)[,1]),]
其思想是使用NA
提取行号,使用which()
并结合选项arr.ind=TRUE
。因为我们对哪些列包含NA
的信息不感兴趣,所以我们只选择which()
与[,1]
一起提供的输出的第一个值,我更喜欢@akrun的解决方案,但这里有一个替代方案可以给出相同的结果:
teleco[unique(which(is.na(teleco), arr.ind=T)[,1]),]
其思想是使用NA
提取行号,使用which()
并结合选项arr.ind=TRUE
。因为我们对哪些列包含NA
的信息不感兴趣,所以我们只选择which()
与[,1]
一起提供的输出的第一个值,我不知道为什么,但您的代码提取了3745个OB。就像我在问题中发布的一样。我想我已经通过使用unique()
纠正了这个问题。也许你想再试一次?如果这是一个有效的替代方案,我宁愿保留它。Perfect-new3=teleco[unique(即.na(teleco),arr.ind=T)[,1]),这很有效!我不知道为什么,但你的代码提取了3745个obs。就像我在问题中发布的一样。我想我已经通过使用unique()
纠正了这个问题。也许你想再试一次?如果这是一个有效的替代方案,我宁愿保留它。Perfect-new3=teleco[unique(即.na(teleco),arr.ind=T)[,1]),这很有效!