是否有R函数以特定方式填充列的NA值?

时间:2019-02-06 09:23:29

标签: r dataframe

所以我有一个像这样的数据框:

enter image description here

我希望所有拥有的值(NA)都被替换为以下公式:Value1 / Value2

enter image description here

我知道如何使用循环来执行此操作,但是当涉及到大规模数据帧时,这需要时间,因此我想知道是否有任何功能/提示可以更快地给我带来预期的结果

2 个答案:

答案 0 :(得分:1)

不是直接功能,但类似的东西会起作用

#Get indices for NA non-zero values
inds1 <- is.na(df$Result) & df$Value2 != 0
#Get indices for NA zero values
inds2 <- is.na(df$Result) & df$Value2 == 0

#Replace them
df$Result[inds1] <- df$Value1[inds1]/df$Value2[inds1]
df$Result[inds2] <- 0

答案 1 :(得分:1)

完美tidyverse

library(tidyverse)
d %>% 
  mutate(Result = ifelse(is.na(Result), Value1/Value2, Result)))

d %>% 
  mutate(Result = case_when(is.na(Result) & Value2 == 0 ~ Value2, 
                            is.na(Result) ~ Value1/Value2, 
                            TRUE ~ Result))