簡體   English   中英

為某些列填寫 R 中的 NA

[英]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.

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