簡體   English   中英

用帶有向量元素的值替換數據框列中的NA值

[英]Replace NA values in a data frame column with values with elements from a vector

所以我有一個100x20的數據幀,其中隨機包含NA值。 我也有一個長度為20的向量。

我想用向量的索引替換每個特定列的所有NA值。 因此,可以說數據框第1列中的所有NA值都應替換為向量的第一個值,第2列中的所有NA值均應替換為向量的第二個值,依此類推。

我可以使用for循環來做到這一點,但我知道我可以更輕松地做到這一點。 我搜索了類似的問題,但找不到任何問題。 如果這是重復的話,我的應用程序。

我們可以通過復制vector來進行分配

i1 <- is.na(df)
df[i1] <- v1[col(df)][i1]

或者我們可以使用

v1[col(df)]*is.na(df) + replace(df, is.na(df), 0)

或者我們可以使用Mapvector元素replace對應的列NA

df[] <- Map(function(x, y) replace(x, is.na(x), y), df, v1)

數據

set.seed(24)
df <- as.data.frame(matrix(sample(c(NA, 1:5), 100*20, replace = TRUE), ncol = 20))
set.seed(48)
v1 <- sample(1:10, 20, replace = TRUE)

暫無
暫無

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

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