【问题标题】:Subtracting dates in the same row by a factor. R将同一行中的日期减去一个因子。 R
【发布时间】:2020-12-16 18:05:04
【问题描述】:

我有以下数据框:

DF<-data.frame(stringsAsFactors = TRUE,
           Sample = c(rep("s1",4),rep("s2",4)),
           date = c("21/07/2020","24/07/2020","25/07/2020","27/07/2020",
                    "03/08/2020","06/08/2020","09/08/2020","10/08/2020"))

首先,我想通过因子“样本”获取连续日期之间的天数。所以输出会是这样的:

DF_2<-data.frame(stringsAsFactors = TRUE,
           Sample = c(rep("s1",4),rep("s2",4)),
           date = c("21/07/2020","24/07/2020","25/07/2020","27/07/2020",
                    "03/08/2020","06/08/2020","09/08/2020","10/08/2020"),
           days = c(NA,3,1,2,NA,3,3,1))

变量“天”是我的结果变量。 之后我想按因素添加所有这些“天”。但这很容易,会这样做:

df_3<-aggregate(days~Sample,DF_2,sum)

如果有人帮助我迈出正确的第一步,获得 DF_2,我将不胜感激。

【问题讨论】:

  • 预期输出是否正确。 'days'中的最后3个值应该是3, 1, 2
  • 不这么认为。从 03/08/2020 到 06/08/2020 = 3 天; 2020 年 6 月 8 日至 2020 年 9 月 8 日 = 3 天; 09/08/2020 至 10/08/2020= 1 天。也许我没有正确解释自己。
  • 对不起,你是对的,检查!

标签: r dataframe date


【解决方案1】:

我们可以使用diff 来获取Date 类转换的'日期'列之间的差异

library(dplyr)
library(lubridate)
DF1 <- DF %>%
         mutate(date = dmy(date)) %>% 
         group_by(Sample) %>% 
         mutate(days = c(NA, diff(date))) %>%
         ungroup

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2021-10-11
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多