我有一个数据框,看起来像这样:

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时,计算开始和结束之间的时间.无论是开始还是结束,都不会发生任何事情.

我试过这样的事:

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

但这给了我一个错误:未定义的列被选中.

有人有主意吗?谢谢

推荐答案

创建一个索引,其中"A"列中有NA个,根据索引将"开始"、"结束"子集,得到difftime并重新分配

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")))

R相关问答推荐

如何将在HW上运行的R中的消息(错误、警告等)作为批处理任务输出

如何 bootstrap glm回归、估计95%置信区间并绘制它?

R:更新后无法运行控制台

使用tidy—select创建一个新的带有mutate的摘要变量

我想在R中总结一个巨大的数据框架,使我只需要唯一的lat、lon、Date(Year)和Maxium Value""""""""

如何直接从R中的风险分数计算c指数?

R中插入符号训练函数的中心因子和尺度因子预测

R spatstat Minkowski Sum()返回多个边界

如何在科学记数法中显示因子

按多列统计频次

在R中,我如何使用滑动窗口计算位置,然后进行过滤?

将全局环境变量的名称分配给列表中的所有元素

根据约束随机填充向量的元素

如何将一列中的值拆分到R中各自的列中

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

扩展R中包含列表的数据框

在R中使用列表(作为tibble列)进行向量化?

将工作目录子文件夹中的文件批量重命名为顺序

填充图例什么时候会有点?

使用grepl过滤特定列范围内的列名