从因子族计算持续时间

时间:2017-03-27 03:56:23

标签: r

这很棘手,我不知道该怎么做。

我有几千个观察结果:

  • 每个观察都有一个与之相关的日期。
  • 每次观察也都有一个与之相关的因素。
  • 每个因素都有1-10个成员。

我需要为每个观察添加持续时间,其中,持续时间是该观察与该因子族中的下一个时间顺序观察之间的差异。如果一个因子族中只有一个观察,或者观察是一个集合中的最终观察,我需要添加一个虚拟变量来捕获该事实并使其持续时间等于特定日期。

这是数据格式的简化:

observation <- seq(1:50)
factor <- c(letters[seq( from = 1, to = 10 )], letters[seq( from = 1, to = 5 )], letters[seq( from = 1, to = 5 )], letters[seq( from = 1, to = 3 )], letters[seq( from = 1, to = 3 )], letters[seq( from = 1, to = 4 )], letters[seq( from = 1, to = 9 )], letters[seq( from = 1, to = 1 )], letters[seq( from = 1, to = 5 )], letters[seq( from = 1, to = 5 )])
date <- seq(from = as.Date("1975/01/01"), to = as.Date("2015/01/01"), length.out = 50)
data <- data.frame(observation, factor, date)

思想?

1 个答案:

答案 0 :(得分:1)

我不确定您希望结果是序列中最后一个日期的结果,因此请查看以下代码是否符合您的需求。我已将[12:11:23] Using gulpfile ~\Projects\my-web\gulpfile.js [12:11:23] Starting 'icons'... [12:11:23] gulp-svgicons2svgfont: Font created $ npm run icons-to-json > @ icons-to-json C:\Users\Superant-Laptop\Projects\my-web\ > node icons-to-json $ npm run icons-to-json > @ icons-to-json C:\Users\Superant-Laptop\Projects\my-web\ > node icons-to-json $ npm run icons-to-json > @ icons-to-json C:\Users\Superant-Laptop\Projects\my-web > node icons-to-json $ npm run icons-to-json > @ icons-to-json C:\Users\Superant-Laptop\Projects\my-web > node icons-to-json [12:11:33] Finished 'icons' after 9.97 s 列设置为等于给定因子序列中的最后一个日期或last.date,否则您可以将这些设置为您希望的任何值。

NA
library(tidyverse)

data = data %>% group_by(factor) %>%
  mutate(duration = c(diff(date), NA_real_),
         last.date = if_else(date==max(date), max(date), as.Date(NA))) %>%
  arrange(factor, date)