繁体   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