R 将不规则时间序列M-D-Y hh:mm:ss转换为规则TS,并填充NA
我读过之前的文章,但我无法得到我想要的。我需要获得一个每天有16次间隔的系列赛(至少是第一天和最后一天,在这种情况下,间隔从第一次/最后一次观察开始/结束)。我希望观察到的变量位于相应的区间内,否则为NA 我的数据如下:[Ya和Yb是观察到的变量]R 将不规则时间序列M-D-Y hh:mm:ss转换为规则TS,并填充NA,r,date,time,time-series,R,Date,Time,Time Series,我读过之前的文章,但我无法得到我想要的。我需要获得一个每天有16次间隔的系列赛(至少是第一天和最后一天,在这种情况下,间隔从第一次/最后一次观察开始/结束)。我希望观察到的变量位于相应的区间内,否则为NA 我的数据如下:[Ya和Yb是观察到的变量] mdyhms Ya Yb Mar-27-2009 19:56:47 25 58.25 Mar-27-2009 20:38:59 9 81.25 Mar-28-2009 08:00:30 9
mdyhms Ya Yb
Mar-27-2009 19:56:47 25 58.25
Mar-27-2009 20:38:59 9 81.25
Mar-28-2009 08:00:30 9 88.75
Mar-28-2009 09:26:29 0 89.25
Mar-28-2009 11:57:01 8.5 74.25
Mar-28-2009 12:19:10 7.5 71.00
Mar-28-2009 14:17:05 1.5 70.00
Mar-28-2009 15:13:14 NA NA
Mar-28-2009 17:09:53 4 85.50
Mar-28-2009 18:37:24 0 86.00
Mar-28-2009 19:19:23 0 50.50
Mar-28-2009 20:45:50 0 36.25
Mar-29-2009 08:44:16 4.5 34.50
Mar-29-2009 10:35:12 8.5 39.50
Mar-29-2009 11:09:13 3.67 69.00
Mar-29-2009 12:40:07 0 54.25
Mar-29-2009 14:31:48 5.33 35.75
Mar-29-2009 16:19:27 6.33 71.75
Mar-29-2009 16:43:20 7.5 64.75
Mar-29-2009 18:37:42 8 83.75
Mar-29-2009 20:01:26 6.17 93.75
Mar-29-2009 20:43:53 NA NA
Mar-30-2009 08:42:05 12.67 88.50
Mar-30-2009 09:52:57 4.33 75.50
Mar-30-2009 12:01:32 1.83 70.75
Mar-30-2009 12:19:40 NA NA
Mar-30-2009 14:23:37 3.83 86.75
Mar-30-2009 16:00:59 37.33 80.25
Mar-30-2009 17:19:28 10.17 77.75
Mar-30-2009 17:49:12 9.83 73.00
Mar-30-2009 20:06:00 11.17 76.75
Mar-30-2009 21:40:35 20.33 68.25
Mar-31-2009 08:11:12 18.33 69.75
Mar-31-2009 09:51:29 14.5 65.50
Mar-31-2009 11:10:41 NA NA
Mar-31-2009 13:27:09 NA NA
Mar-31-2009 13:44:35 NA NA
Mar-31-2009 16:01:23 NA NA
Mar-31-2009 16:56:14 NA NA
Mar-31-2009 18:27:28 NA NA
Mar-31-2009 19:17:46 NA NA
Mar-31-2009 21:12:22 NA NA
Apr-01-2009 08:35:24 2.33 60.25
Apr-01-2009 09:24:49 1.33 71.50
Apr-01-2009 11:28:34 5.67 62.00
Apr-01-2009 13:31:48 NA NA
Apr-01-2009 14:52:18 NA NA
Apr-01-2009 15:11:44 1.5 71.50
Apr-01-2009 17:00:53 3.17 84.00
谢谢 假设您的数据帧称为“数据”,我会使用。它们更容易使用:
#Conversion of dates
Data$time <- as.POSIXct(Data$mdyhms,format="%b-%d-%Y %H:%M:%S")
#conversion to time series
library(xts)
TimeSeries <- xts(Data[,c("Ya","Yb")],Data[,"time"])
日期转换
Data$time假设您的数据帧被称为“数据”,我会使用。它们更容易使用:
#Conversion of dates
Data$time <- as.POSIXct(Data$mdyhms,format="%b-%d-%Y %H:%M:%S")
#conversion to time series
library(xts)
TimeSeries <- xts(Data[,c("Ya","Yb")],Data[,"time"])
日期转换
Data$time您可以在对象上使用
dput
函数(dput(foo)
)并复制输出吗?这使我们能够更轻松地读取数据感谢Marek编辑我的数据,现在我知道怎么做了!您可以在对象上使用dput
函数(dput(foo)
)并复制输出吗?这使我们能够更轻松地读取数据感谢Marek编辑我的数据,现在我知道怎么做了@Joris Meys Joris,关于这些观察结果的特点,我同意你的看法。除此之外,我希望观察到的变量位于相应的区间(每天16个),否则为NA(这是我的目标)。另一方面,当我应用你们的建议时,我得到了这个错误:字符串不是标准的明确格式。谢谢@艾丽卡:考虑到样本数据中的时间点,不可能确定额外的NA观测值应该填写在哪里。每一次观测都在不同的时间点,它们之间的间隔并不一致。因此,没有自动的方法来做到这一点。关于错误:我用你的样本数据试过了,效果很好。确保mdyhms是一个字符串,在整个变量中,它的格式在任何地方都是相同的,不要忘记首先转换为POSIXct。@Erica:即使您定义了时间间隔并将每个时间点放在它所属的时间间隔中,某些时间间隔仍然会得到2个数据点。因此,没有可能的方法做到这一点。@Joris Meys:正如你所指出的,有些时间间隔有两个观测值。我的想法是定义区间,并将观察到的变量定位在相应的区间内。当2个观测值位于同一区间时,考虑平均值。我试过几种形式,但都失败了。我想我得手工做。无论如何,谢谢你的帮助@艾丽卡:那已经很不一样了。这实际上比你最初的问题可行得多。如果你修改这个问题,我会检查我能找到什么。@Joris Meys Joris,关于这些观察的特点,我同意你的看法。除此之外,我希望观察到的变量位于相应的区间(每天16个),否则为NA(这是我的目标)。另一方面,当我应用你们的建议时,我得到了这个错误:字符串不是标准的明确格式。谢谢@艾丽卡:考虑到样本数据中的时间点,不可能确定额外的NA观测值应该填写在哪里。每一次观测都在不同的时间点,它们之间的间隔并不一致。因此,没有自动的方法来做到这一点。关于错误:我用你的样本数据试过了,效果很好。确保mdyhms是一个字符串,在整个变量中,它的格式在任何地方都是相同的,不要忘记首先转换为POSIXct。@Erica:即使您定义了时间间隔并将每个时间点放在它所属的时间间隔中,某些时间间隔仍然会得到2个数据点。因此,没有可能的方法做到这一点。@Joris Meys:正如你所指出的,有些时间间隔有两个观测值。我的想法是定义区间,并将观察到的变量定位在相应的区间内。当2个观测值位于同一区间时,考虑平均值。我试过几种形式,但都失败了。我想我得手工做。无论如何,谢谢你的帮助@艾丽卡:那已经很不一样了。这实际上比你最初的问题可行得多。如果你修改这个问题,我会检查我能找到什么。