R 基于子集中的行位置应用函数
我试图计算一个指数,但我被公式中暗示日期的一个步骤卡住了 以下是我输入的一部分:R 基于子集中的行位置应用函数,r,R,我试图计算一个指数,但我被公式中暗示日期的一个步骤卡住了 以下是我输入的一部分: YEAR RN DATE NOM SITE LONG SP SUMNB NB100 2010 RNN157 2010-04-22 COMBE LAVAUX-JEAN ROLAND RNN157-C
YEAR RN DATE NOM SITE LONG SP SUMNB NB100
2010 RNN157 2010-04-22 COMBE LAVAUX-JEAN ROLAND RNN157-Combe Lavaux 01 Sentier des crêtes 111 Anthocharis cardamines (Linnaeus, 1758) 1 0.9009009
2010 RNN157 2010-04-26 COMBE LAVAUX-JEAN ROLAND RNN157-Combe Lavaux 01 Sentier des crêtes 111 Anthocharis cardamines (Linnaeus, 1758) 1 0.9009009
2010 RNN157 2010-03-22 COMBE LAVAUX-JEAN ROLAND RNN157-Combe Lavaux 01 Sentier des crêtes 111 Anthocharis cardamines (Linnaeus, 1758) 0 0.0000000
2010 RNN157 2010-09-29 COMBE LAVAUX-JEAN ROLAND RNN157-Combe Lavaux 01 Sentier des crêtes 111 Anthocharis cardamines (Linnaeus, 1758) 0 0.0000000
2010 RNN157 2010-05-18 COMBE LAVAUX-JEAN ROLAND RNN157-Combe Lavaux 06 Friches parc de nuit 111 Anthocharis cardamines (Linnaeus, 1758) 1 0.9009009
2010 RNN157 2010-04-15 COMBE LAVAUX-JEAN ROLAND RNN157-Combe Lavaux 06 Friches parc de nuit 111 Anthocharis cardamines (Linnaeus, 1758) 0 0.0000000
2010 RNN157 2010-09-29 COMBE LAVAUX-JEAN ROLAND RNN157-Combe Lavaux 06 Friches parc de nuit 111 Anthocharis cardamines (Linnaeus, 1758) 0 0.0000000
对于每一年/站点/SP子集内的每一行,我需要计算一行的日期与前一行的日期之间的时间差(第x行)-(第x-1行))。然后,结果将存储在新列中
我已经找到了一些函数,允许用行位置计算东西,但是因为我使用日期,而且由于不清楚的原因,它会返回1970年这样的日期
>DF[, DIFF := DATE - c(NA, DATE[seq_len(.N-1)])][]
SP SUMNB NB100 DIFF
Anthocharis cardamines (Linnaeus, 1758) 1 0.9009009 <NA>
Anthocharis cardamines (Linnaeus, 1758) 1 0.9009009 1970-01-05
Anthocharis cardamines (Linnaeus, 1758) 0 0.0000000 1969-11-27
Anthocharis cardamines (Linnaeus, 1758) 0 0.0000000 1970-07-11
Anthocharis cardamines (Linnaeus, 1758) 1 0.9009009 1969-08-20
Anthocharis cardamines (Linnaeus, 1758) 0 0.0000000 1969-11-29
Anthocharis cardamines (Linnaeus, 1758) 0 0.0000000 1970-06-17
>DF[,DIFF:=DATE-c(NA,DATE[seq_len(.N-1)])]
SP SUMNB NB100差速器
花车轴草小豆蔻(林奈,1758)1 0.9009
花车轴草小豆蔻(林奈,1758)10.9009009 1970-01-05
花椰菜小豆蔻(林奈,1758)0.0000000 1969-11-27
花椰菜小豆蔻(林奈,1758)0.0000000 1970-07-11
花车轴草小豆蔻(林奈,1758)10.9009009 1969-08-20
花椰菜小豆蔻(林奈,1758)0.0000000 1969-11-29
花车轴草小豆蔻(林奈,1758)0.0000000 1970-06-17
我还没有达到在一个tapply函数中加入这个公式以便将其应用于子集的程度
由于我未能将其与difftime()混合,您对如何在几天内获得差异有什么想法吗?
?日期说:
日期表示为自1970-01-01以来的天数,带有
早期日期的负值
因此,DIFF
中的值是以天为单位的日期差,然后转换为日期对象
diff()
有什么问题吗
# example data
set.seed(1)
dates <- seq(as.Date("2012-01-01"), as.Date("2013-12-31"), by="day")
dates <- dates[sort(sample(1:length(dates), size=length(dates)*.50))]
DF <- data.frame(DATES=dates)
# date diffs
DF <- transform(DF, DIFF = c(NA, diff(DATES)))
# DATES DIFF
# 1 2012-01-09 NA
# 2 2012-01-10 1
# 3 2012-01-13 3
# 4 2012-01-16 3
# 5 2012-01-22 6
# 6 2012-01-24 2
#示例数据
种子(1)
日期.数字(差异)怎么样?哦,我早该知道的!谢谢