Year tot_precip
1/1/1989 0
1/2/1989 .23
1/3/1989 0
1/4/1989 .43
1/5/1989 0.254
1/6/1989 0
1/7/1989 0
1/8/1989 0
1/9/1989 0
1/10/1989 .21
我试图根据某些月份对降水数据进行分组。我做了一些研究。
tt=as.POSIXct(paste(prec$Year,prec$tot_precip), format="%m/%d/%Y")
datZoo <- zoo(prec[,-c(1,2)], tt)
month <- function (x) as.numeric(format(x, "%m"))
veranoIdx <- which(month(tt) %in% 6:8)
veranoZoo <- datZoo[veranoIdx]
veranoZoo
以上代码根据某些月份(6月,7月8月)提取Year列,但我对如何提取这些日期的降水值(即veranoZoo系列)感到迷茫
答案 0 :(得分:2)
假设Lines
如下面的注释所示,将数据读入zoo对象。由于这显然是月度数据,因此最好使用"yearmon"
类作为索引。现在使用subset
获取6月,7月,8月的子集。
z <- read.zoo(text = Lines, header = TRUE, FUN = as.yearmon, format = "%d/%m/%Y")
subset(z, cycle(z) %in% 6:8)
给这个动物园系列:
Jun 1989 Jul 1989 Aug 1989
0 0 0
这也有效:
z[cycle(z) %in% 6:8]
(如果您的数据位于文件myfile.dat
中,请在text=Lines
语句中将"myfile.dat"
替换为read.zoo
。
注意:强>
Lines <- "Year tot_precip
1/1/1989 0
1/2/1989 .23
1/3/1989 0
1/4/1989 .43
1/5/1989 0.254
1/6/1989 0
1/7/1989 0
1/8/1989 0
1/9/1989 0
1/10/1989 .21"
答案 1 :(得分:0)
将输入视为:
dft <- read.table(header = TRUE, text = "Year tot_precip
1/1/1989 0
1/2/1989 .23
1/3/1989 0
1/4/1989 .43
1/5/1989 0.254
1/6/1989 0
1/7/1989 0
1/8/1989 0
1/9/1989 0
1/10/1989 .21",stringsAsFactors=FALSE)
您可以使用tidyverse
个功能并尝试:
dft %>% filter(month(Year) %in% c(6,7,8))
给出:
Year tot_precip
1 1/6/1989 0
2 1/7/1989 0
3 1/8/1989 0