按其他日期列 (R) 中的信息填充缺失的变量

Fill missing Variables by Information from other date columns (R)

提问人:Sulz 提问时间:5/10/2022 更新时间:5/10/2022 访问量:31

问:

我有一个 Dataframe,看起来类似于这样:

set.seed(42)   
start <- Sys.Date() + sort(sample(1:10, 5))
set.seed(43)
end <-  Sys.Date() + sort(sample(1:10, 5))
end[4] <- NA
A <- c("10", "15", "NA", "4", "NA")
B  <- rpois(n = 5, lambda = 10) 
df <- data.frame(start, end, A, B)

我希望,当 A 列中有一个 NA 来计算开始和结束的时间时。当开始或结束为 NA 时,不会发生任何事情。

我尝试了这样的事情:

df[, df$A [is.na(df[, df$A])]] <- difftime(df$end, df$start, units =  "hours")

但这给了我错误:选择了未定义的列。

有人有想法吗?谢谢。

r 变量 na 计算 difftime

评论

0赞 Maël 5/10/2022
但是,如果没有定义,你怎么能有所作为呢?end
0赞 Sulz 5/10/2022
不好意思。我看到了问题,因此我添加了评论“当开始或结束为 NA 时,什么都不会发生。

答:

2赞 akrun 5/10/2022 #1

创建一个索引,其中有 “A” 列,根据索引对 'start'、'end' 进行子集,获取并赋值NAdifftime

df$A <- as.numeric(df$A)
i1 <- is.na(df$A)
df$A[i1] <-  with(df, as.numeric(difftime(start[i1], end[i1], units = "hours")))