我想要分割從可變基於NA中的R的數據集的值,例如:- [R分裂基於NA的數據幀值
var1 var2
1 21
2 NA
3 NA
4 10
並使其像這樣:
var1 var2
1 21
4 10
var1 var2
2 NA
3 NA
我想要分割從可變基於NA中的R的數據集的值,例如:- [R分裂基於NA的數據幀值
var1 var2
1 21
2 NA
3 NA
4 10
並使其像這樣:
var1 var2
1 21
4 10
var1 var2
2 NA
3 NA
嗨試試這個
new_DF <- DF[rowSums(is.na(DF)) > 0,]
或者如果你想查詢的特定列,您還可以使用
new_DF <- DF[is.na(DF$Var),]
如果您有NA字符值,首次運行
Df[Df=='NA'] <- NA
將其替換爲缺失值。
split
函數在這種情況下很容易出現。
data <- read.table(text="var1 var2
1 21
2 NA
3 NA
4 10", header=TRUE)
split(data, is.na(data$var2))
#
# $`FALSE`
# var1 var2
# 1 1 21
# 4 4 10
#
# $`TRUE`
# var1 var2
# 2 2 NA
# 3 3 NA
另一種更普遍的方法是使用complete.cases
命令。命令找出沒有缺失值的行(無NAs)並返回TRUE/FALSE值。
dt = data.frame(var1 = c(1,2,3,4),
var2 = c(21,NA,NA,10))
dt1 = dt[complete.cases(dt),]
dt2 = dt[!complete.cases(dt),]
dt1
# var1 var2
# 1 1 21
# 4 4 10
dt2
# var1 var2
# 2 2 NA
# 3 3 NA
查看更多詳細信息:
大多數統計功能(例如,LM())有類似na.action它適用於模型,而不是單個變量。 na.fail()如果沒有NA值則返回對象(數據集),否則返回NA(停止分析)。 na.pass()返回數據對象是否具有NA值,如果該函數在內部處理NA值,這非常有用。 na.omit()如果模型中使用的任何變量對於該觀測值都是NA,則會忽略整個觀察值(行)的對象。 na.exclude()與na.omit()相同,只是它允許使用naresid或napredict的函數。您可以將na.action想象爲數據對象上的函數,其結果是lm()函數中的數據對象。在LM()函數的語法允許na.action作爲參數的規範:
lm(na.omit(dataset),y~a+b+c)
lm(dataset,y~a+b+c,na.omit) # same as above, and the more common usage
可以設置缺失值的默認處理與
options("na.actions"=na.omit)
'分裂(DF,是.na(DF $ VAR2))' – Sotos