可以计算一段时间内的频率吗?示例数据:
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)
我首先要说的是我需要对日期降序进行排序并计算一段时间,但我不知道该怎么做。
答案 0 :(得分:1)
只要您确保max
变量设置为min
,即Dates
,就可以在日期上使用as.Date
和a$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
值不同意但可能是舍入错误。 floor
或ceiling
(当然还有round
)等功能可用于调整舍入