【发布时间】:2015-03-31 14:57:07
【问题描述】:
给定一个 data.frame,如果 var1 和 var2 同时(意味着在同一行)缺失值,我会尝试将 var4 的值分配给 var3,否则 var3 会保留自己的值。
我试过了,但它不起作用,有什么建议吗?非常感谢。
aaa<-function(x) {
ifelse((is.na(x$var1)&is.na(x$var2)),
x$var3<-x$var4, x$var3<-x$var3)
return(x)
}
例如:
var1 var2 var3 var4
NA NA NA 1.610
5 NA 4 6
2 1 3.5 NA
1 1.5 2.5 3
我希望:
var1 var2 var3 var4
NA NA 1.610 1.610
5 NA 4 6
2 1 3.5 NA
1 1.5 2.5 3
【问题讨论】:
-
可能只是
indx <- (is.na(x$var1) & is.na(x$var2)) ; x[indx, "var3"] <- x[indx, "var4"]。其中x是您的数据框。 -
@UmbertoMedicamento 你的 ifelse 函数可以是
aaa <- function(x) { x[,'var3'] <-with(x, ifelse(is.na(var1) & is.na(var2), var4, var3)); x}; aaa(df) -
@David Arenburg 有意思,你能解释一下吗?无论如何,我试过了,但它不起作用。我的数据都是数字。
-
究竟是什么不工作?它适用于提供的数据。