簡體   English   中英

根據NA在數據幀的其他兩個變量中分配值

[英]Assign values based on NA in other two variables of a data frame

給定一個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

這里不需要ifelse ,因為您的“ no”語句沒有做任何事情。 您需要做的就是找到正確的行並替換它們,而其余所有行都保持不變。 這是一個簡單的基礎R方法

indx <- with(df, is.na(var1) & is.na(var2))
df[indx, "var3"] <- df[indx, "var4"]

不過,為了提高效率和減少按鍵操作,我建議您使用data.table包並通過引用更新值

library(data.table)
setDT(df)[is.na(var1) & is.na(var2), var3 := var4]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM