1

次の特性を持つ文字列データがあります
c = ("19790102", "19790103", "19790104", "19790105",...)

今度は、季節ごと (夏、秋、冬、春) のインデックスを作りたいと思います。私はたった1ヶ月(例えば9月)でそれを行うことができました:

ind_september=which(as.numeric(substr(dayserie[],5,6))==9)

しかし、季節のインデックスを取得するために数か月でそれを行う方法がわかりません。

誰かがアイデアを持っていますか?

4

2 に答える 2

1

seasパッケージもチェックできます。

library(seas)

x <- c("19790304", "19790603", "19790903",  "19791205")

x2 <- as.Date(x, format = "%Y%m%d")

# width = "JFM": annual quarterly divisions: JFM, AMJ, JAS, OND
x3 <- mkseas(x2, width = "JFM")
x3
# [1] JFM AMJ JAS OND

# if you wish to rename factor levels
x4 <- factor(x3, labels = c("winter", "spring", "summer", "autumn"))
x4
# [1] winter spring summer autumn

# alternative division
# width = "DJF": meteorological quarterly divisions: DJF, MAM, JJA, SON
x3 <- mkseas(x2, width = "DJF")
x3
# [1] MAM JJA SON DJF

x4 <- factor(x3, labels = c("winter", "spring", "summer", "autumn"))
x4
# [1] spring summer autumn winter
于 2013-10-15T16:37:25.540 に答える
1

特定の日付が属している季節を検索を使用し て、関数をこっそりと変更してフォーマット引数を追加します。

getSeason <- function(DATES,frmt = "%Y%m%d") {
  WS <- as.POSIXct("2012-12-21", format = "%Y-%m-%d") # Winter 
  SE <- as.POSIXct("2012-3-21",  format = "%Y-%m-%d") # Spring 
  SS <- as.POSIXct("2012-6-21",  format = "%Y-%m-%d") # Summer 
  FE <- as.POSIXct("2012-9-21",  format = "%Y-%m-%d") # Autumn 

  # Convert dates from any year to 2012 dates
  d <- strftime(as.POSIXct(DATES, format=frmt),
                format='2012-%m-%d')

  ifelse (d >= WS | d < SE, "Winter",
          ifelse (d >= SE & d < SS, "Spring",
                  ifelse (d >= SS & d < FE, "Summer", "Fall")))
}

dayserie <- c("19790102", "19790103", "19790104", "19790105")
getSeason(dayserie,'%Y%m%d')

"Winter" "Winter" "Winter" "Winter"
于 2013-10-15T14:30:40.953 に答える