所以我有一个像这样的数据框:
我希望所有拥有的值(NA)都被替换为以下公式:Value1 / Value2
我知道如何使用循环来执行此操作,但是当涉及到大规模数据帧时,这需要时间,因此我想知道是否有任何功能/提示可以更快地给我带来预期的结果
答案 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))