[英]Fill NAs in R for certain columns
我正在運行線性回歸,但我的許多觀察結果都可以使用,因為某些值在行中有一個 NA。 我知道,如果輸入了一組變量中的一個,那么 NA 實際上是 0。但是,如果所有值都是 NA,那么列不會改變。 我將包括示例,因為我知道這可能會令人困惑。
我所擁有的是看起來像這樣的東西:
df <- data.frame(outcome = c(1, 0, 1, 1, 0),
Var1 = c(1, 0, 1, NA, NA),
Var2 = c(NA, 1, 0, 0, NA),
Var3 = c(0, 1, NA, 1, NA))
對於變量 1-3,前 4 行有一個 NA,但在其他變量中有其他條目。 然而,在最后一行中,所有值都是 NA。 我知道最后一行中的所有內容都是 NA,但我希望前 4 行中的 NA 填充為 0。期望的結果如下所示:
desired - data.frame(outcome = c(1, 0, 1, 1, 0),
Var1 = c(1, 0, 1, 0, NA),
Var2 = c(0, 1, 0, 0, NA),
Var3 = c(0, 1, 0, 1, NA))
我知道有一些混亂的方法可以解決這個問題,但我想知道最簡化的流程是什么?
我希望這是有道理的,我知道這個問題令人困惑。 如果需要,我可以澄清任何事情。
我們可以使用rowSums
創建一個邏輯向量,在將NA
更改為 0 之前使用它來對行進行子集化
i1 <- rowSums(!is.na(df[-1])) > 0
df[i1, -1][is.na(df[i1, -1])] <- 0
-檢查所需
identical(df, desired)
#[1] TRUE
您可以使用apply
有條件地替換某些行中的NA
:
data.frame(t(apply(df, 1, function(x) if (all(is.na(x[-1]))) x else replace(x, is.na(x), 0))))
Output
outcome Var1 Var2 Var3
1 1 1 0 0
2 0 0 1 1
3 1 1 0 0
4 1 0 0 1
5 0 NA NA NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.