一段时间内的频率

时间:2016-09-08 06:55:31

标签: r date

可以计算一段时间内的频率吗?示例数据:

ID=c(1,1,1,1,2,2,2,3,3,3)
Dates <- c("2004-01-01", "2008-10-01", "2001-01-01", "2011-04-01", 
    "2013-05-01", "2014-08-01", "2009-03-01", "2001-12-01", "2003-04-01", "2011-05-01")
a <- data.frame(ID, Dates)

我想实现这样的目标:

ID = c(1,2,3)
N = c(4, 3, 3)
Period = a = c("?", "?", "?")
Freq = c(2.5, 1.3, 3.3)
b <- data.frame(ID, z = N, a = Period, y = Freq) 

我首先要说的是我需要对日期降序进行排序并计算一段时间,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

只要您确保max变量设置为min,即Dates,就可以在日期上使用as.Datea$Dates <- as.Date(a$Dates)。你可以想象减去max(Dates) - min(Dates)将给出我们的天数范围。舍入和除以365将这些天转换为年。

libary(dplyr)
a %>% 
  group_by(ID) %>% 
  summarise(N = n(), Period = as.integer(round((max(Dates)-min(Dates))/365)), Freq = Period/N)

# A tibble: 3 × 4
#     ID     N Period     Freq
#  <dbl> <int>  <int>    <dbl>
#1     1     4     10 2.500000
#2     2     3      5 1.666667
#3     3     3      9 3.000000

注意Freq值不同意但可能是舍入错误。 floorceiling(当然还有round)等功能可用于调整舍入