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

是否有R函数以特定方式填充列的NA值?,r,dataframe,R,Dataframe,所以我有一个这样的数据框: 我希望用以下公式替换我所有且仅缺少的值(NAs):Value1/Value2 我知道如何使用循环来实现这一点,但当涉及到大规模数据帧时,这需要时间,因此我想知道是否有任何函数/技巧可以更快地给出预期的结果 #Get indices for NA non-zero values inds1 <- is.na(df$Result) & df$Value2 != 0 #Get indices for NA zero values inds2 <- i

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

我希望用以下公式替换我所有且仅缺少的值(NAs):Value1/Value2


我知道如何使用循环来实现这一点,但当涉及到大规模数据帧时,这需要时间,因此我想知道是否有任何函数/技巧可以更快地给出预期的结果

#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
#获取NA非零值的索引

inds1不是一个直接函数,但类似的函数可以工作

#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
#获取NA非零值的索引

inds1非常适合
tidyverse

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


非常适合
tidyverse

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


欢迎来到SO。请仔细看看这里,并更新您的问题:看看网页!欢迎来到SO。请仔细看看这里,并更新您的问题:看看网页!谢谢,它工作得非常好,但是是否可以像条件一样添加,并说当value2等于0时,我的结果为0?@Arkning您可以通过执行
df$result[df$value2==0]来替换所有
value2==0的
result
值,我考虑过这一点,但我只想在开始时为NAs值做这一点,因为我可能有一行,其中Value2=0,但我的结果已经是一个值,我不想更改它,然后我可以做一些类似df$result[df$Value2[inds]==0]谢谢,它工作得非常好,但是,是否可以像条件一样添加,并说当value2等于0时,我的结果为0?@Arkning您可以通过执行
df$result[df$value2==0]来替换所有
value2==0的
result
值,我考虑过这一点,但我只想在开始时对NAs值这样做,因为我可能有一行,其中Value2=0,但我的结果已经是一个值,我不想更改它,然后我可以执行类似df$result[df$Value2[inds]==0]