将NA替换为“ No_” colname” _found”

时间:2019-07-29 15:32:14

标签: r na

我想用“ No_ [colname] _found”替换数据框中的每个NA。 (如果有一个值,我想保留它。)我知道我可以为每一列分别做到这一点,但是我有> 100列。

首先,我尝试用colname替换数据框中的每个NA。我知道如何添加“ No_”和“ _found”(通过使用粘贴)。 到目前为止,这是我一直未尝试的尝试:

DF <- apply(DF, 2, function(x){ifelse(is.na(x), colnames(DF)[x], x)})
DF <- apply(DF, 2, function(x){ifelse(is.na(x), colnames(x), x)})
DF <- apply(DF, 2, function(x){ifelse(is.na(x), colnames(DF[x]), x)})

到目前为止,我一直没有收到错误消息。但是我的NA值不会更改为别名,它们仍然是NA。

1 个答案:

答案 0 :(得分:0)

我们可以尝试在输入数据框的名称上使用lapply

df <- data.frame(v1=c(1,NA,3), v2=c(4,5,6), v3=c(NA,8,NA))
output <- data.frame(lapply(names(df), function(x) {
    ifelse(is.na(df[[x]]), paste0("No_", x, "_found"), df[[x]])
}))
names(output) <- names(df)

df

  v1 v2 v3
1  1  4 NA
2 NA  5  8
3  3  6 NA

output

           v1 v2          v3
1           1  4 No_v3_found
2 No_v1_found  5           8
3           3  6 No_v3_found