从R中的数据帧中删除行时出现NA值问题
这是我的数据框:从R中的数据帧中删除行时出现NA值问题,r,dataframe,R,Dataframe,这是我的数据框: ID <- c('TZ1','TZ2','TZ3','TZ4') hr <- c(56,32,38,NA) cr <- c(1,4,5,2) data <- data.frame(ID,hr,cr) ID hr cr 1 TZ1 56 1 2 TZ2 32 4 3 TZ3 38 5 4 TZ4 NA 2 这就是我认为有效的方法: data = data[data$hr !=56,] 但是,生成的数据帧如下所示: ID hr
ID <- c('TZ1','TZ2','TZ3','TZ4')
hr <- c(56,32,38,NA)
cr <- c(1,4,5,2)
data <- data.frame(ID,hr,cr)
ID hr cr
1 TZ1 56 1
2 TZ2 32 4
3 TZ3 38 5
4 TZ4 NA 2
这就是我认为有效的方法:
data = data[data$hr !=56,]
但是,生成的数据帧如下所示:
ID hr cr
2 TZ2 32 4
3 TZ3 38 5
NA <NA> NA NA
ID-hr-cr
2 TZ2 32 4
3 TZ3 38 5
娜娜娜
我怎样才能修改代码以合并NA值,这样就不会发生这种情况?谢谢你的帮助,我想不出来
编辑:我还想在数据框中保留NA值。问题是,当我们执行
==
或时=代码>,如果存在NA值,它将保持原样,并为相应的NA值创建NA行。因此,使逻辑索引只包含真/假值的一种方法是在比较中也使用is.na
data[!(data$hr==56 & !is.na(data$hr)),]
# ID hr cr
#2 TZ2 32 4
#3 TZ3 38 5
#4 TZ4 NA 2
我们也可以应用相反的逻辑
subset(data, hr!=56|is.na(hr))
# ID hr cr
#2 TZ2 32 4
#3 TZ3 38 5
#4 TZ4 NA 2
subset(data, hr!=56|is.na(hr))
# ID hr cr
#2 TZ2 32 4
#3 TZ3 38 5
#4 TZ4 NA 2