如何根据第三列的值计算两个时间戳列之间的差异?
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"))
我有一个数据框:
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"))