如何根据第三列的值计算两个时间戳列之间的差异?

How to calculate difference between two timestamp columns depending on value of third column?

我有一个数据框:

col1                                      col2               col3
2019-04-26 12:37:11.52000      2019-04-27 12:37:11.52000          2
2019-04-28 12:37:11.52000      2019-04-30 12:37:11.52000          1
2019-05-03 12:37:11.52000      2019-05-08 12:37:11.52000          2
NA                             2019-05-08 12:37:11.52000          2

我想创建新列作为 col2 和 col1 的区别。我将使用 difftime 函数。但是,我希望仅当 col3 中该行的值为 2 时才有值。否则它必须为 NA。所以,期望的结果是:

col1                                      col2                  col3    diff
2019-04-26 12:37:11.52000      2019-04-27 12:37:11.52000          2      1
2019-04-28 12:37:11.52000      2019-04-30 12:37:11.52000          1      NA
2019-05-03 12:37:11.52000      2019-05-08 12:37:11.52000          2      5
NA                             2019-05-08 12:37:11.52000          2      NA

怎么做?如何添加该条件?

您可以使用 NA 初始化结果列,并仅对具有 col3 == 2.

的那些值进行差分
df$diff <- NA
inds <- df$col3 == 2
df$diff[inds] <- as.numeric(difftime(df$col2[inds], df$col1[inds], "days"))

dplyr 管道中,您可以使用 -

library(dplyr)

df %>%
  mutate(diff = if_else(col3 == 2, as.numeric(difftime(col2, col1, 'days')), NA_real_))

你可以使用 dplyr。

dfnew <- df%>%
          mutate(diff = NA)%>%
          filter(col3 == "2")%>%
          mutate(diff = difftime(col2,col1, units = "auto"))