根据R

时间:2017-02-02 04:01:13

标签: r

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系列)感到迷茫

2 个答案:

答案 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