Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于子集中的行位置应用函数_R - Fatal编程技术网

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)

日期.数字(差异)怎么样?哦,我早该知道的!谢谢