gpt4 book ai didi

r - dplyr rowwise + replace_NA : replacing NAs in multiple columns with value from other column

转载 作者:行者123 更新时间:2023-12-05 03:50:17 27 4
gpt4 key购买 nike

我有兴趣用同一行中的引用值替换一行中的所有 NA。以下代码有效,但对于我的实际用例来说太慢了:

df = data.frame(ref = c(1,3,4,2,5), var1 = c(NA,3,4,2,1), var2 = c(1,3,NA,5,5))
for (i in 1:nrow(df)) {
ref_value = as.character(df$ref[i])
df[i,] = df[i,] %>% mutate_all(replace_na, replace = ref_value) }

我试图通过以下修改来加快该过程,但出现了以下错误。

df = data.frame(ref = c(1,3,4,2,5), var1 = c(NA,3,4,2,1), var2 = c(1,3,NA,5,5))
df %>% rowwise() %>% mutate_all(replace_na, replace = ref)

错误:

错误:mutate() 输入 ref 有问题。x data 的替换是长度 2,而不是长度 1ℹ 输入 ref(function (data, replace, ...) ...。ℹ 错误发生在第 1 行。

有什么建议吗?

最佳答案

我们可以使用合并。遍历“var”列并将 coalesce 与循环列和“ref”一起使用,这样无论哪里有 NA,它都会被“ref”中的相应元素替换',而另一个非 NA 元素保持原样

library(dplyr) #>= 1.0.0
df %>%
mutate(across(starts_with('var'), ~ coalesce(., ref)))
# ref var1 var2
#1 1 1 1
#2 3 3 3
#3 4 4 4
#4 2 2 5
#5 5 1 5

关于r - dplyr rowwise + replace_NA : replacing NAs in multiple columns with value from other column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63476089/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com