看起来很简单,我已经完成了所有类似的问题并将它们全部应用了......我要么一无所获,要么就是......
尝试从水温(WTEMP)获取特定日期范围(SAMPLE_DATE)2007-06-01至2007-09-30来自(allconmon)
这是我到目前为止的代码......
bydate<-subset(allconmon, allconmon$SAMPLE_DATE > as.Date("2007-06-01") & allconmon$SAMPLE_DATE < as.Date("2007-09-30"))
我也试过这个但是得到了错误
bydate2<- as.xts(allconmon$WTEMP,order.by=allconmon$SAMPLE_DATE)
bydate2['2007-06-01/2007-09-30']
Error in xts(x, order.by = order.by, frequency = frequency, .CLASS = "double", :
order.by requires an appropriate time-based object
不确定我在这里做错了什么......似乎适合其他人
答案 0 :(得分:0)
我强烈建议您在处理时间序列数据时使用R中的zoo
包。
您提到的操作实际上是window
中的zoo
函数。
以下是?window
的示例:
Examples
window(presidents, 1960, c(1969,4)) # values in the 1960's
window(presidents, deltat = 1) # All Qtr1s
window(presidents, start = c(1945,3), deltat = 1) # All Qtr3s
window(presidents, 1944, c(1979,2), extend = TRUE)
pres <- window(presidents, 1945, c(1949,4)) # values in the 1940's
window(pres, 1945.25, 1945.50) <- c(60, 70)
window(pres, 1944, 1944.75) <- 0 # will generate a warning
window(pres, c(1945,4), c(1949,4), frequency = 1) <- 85:89
pres
来自JSS的a list of papers演示了zoo
包的使用,也重塑了我发现非常鼓舞人心的数据。
答案 1 :(得分:0)
我明白了!在多个级别上......首先,当我从文本文件上传时,我没有注意到R用我的样本日期标签做了一些时髦的东西...可能是我的错...
这是数据集的一小部分样本。其对5个变量的5,573,301次观测
注意样品日期前面的时髦符号....不确定为什么R做到了......
ï..SAMPLE_DATE SampleTime STATION SONDE Layer TOTAL_DEPTH TOTAL_DEPTH_A BATT BATT_A WTEMP WTEMP_A SPCOND SPCOND_A SALINITY SALINITY_A DO_SAT DO_SAT_A
但是我做了什么....(我将名称更改为x,因为allconmon有点过分)
x <- read.csv(file = "C:/Users/Desktop/cmon2001-08.txt",quote = "",header = TRUE,sep = "\t", na.strings = c("","NULL"))
library(chron)
x$month <- months(as.Date(x$ï..SAMPLE_DATE, "%Y-%m-%d"))
x$year <- substr(as.character(x$ï..SAMPLE_DATE), 1, 4)
y <- x[x$month == 'June' | x$month == 'July' | x$month == 'August' | x$month == 'September' ,]
所以现在我能够将我的所有数据按4个月,然后按年,站和水温进行分组....