我的代码有一个小问题,我不明白。我已经使用R多年了,但这对我来说是一个新问题。
我有一个带有日期(sdata)的数据框,并且我想查看该数据框对应于另一个数据框的哪一行(meteo),请参见下面的示例:
具有:
str(meteo)
'data.frame': 13880 obs. of 9 variables:
$ station : int 22 22 22 22 22 22 22 22 22 22 ...
$ Date : Date, format: "1981-01-01" "1981-01-02" "1981-01-03" "1981-01-04" ...
$ minte : num 0 -0.2 1 0.4 -5.5 -8.3 -13.1 -14.2 -3.6 -0.5 ...
$ maxte : num 4.5 6.4 6.3 0.7 -3.6 -4.1 -3 2 3 1.8 ...
$ MeanTemp: num 2.2 3.1 3.6 0.6 -4.6 -6.2 -8 -6.1 -0.3 0.6 ...
$ prec08 : num 2.8 0.2 12 3.1 8 0.6 0 0 1.6 0.8 ...
$ glorad : num 1.9 2.5 0.6 0.6 3.2 4.9 3.8 0.6 0.6 5.1 ...
$ makkepot: num 0.2 0.3 0.1 0.1 0.3 0.4 0.3 0.1 0.1 0.6 ...
$ doy : num 1 2 3 4 5 6 7 8 9 10 ...
和
str(sdata)
'data.frame': 4 obs. of 15 variables:
$ Group.1 : int 1997 1998 1999 2000
$ Sow : Date, format: "1997-04-17" "1998-04-21" "1999-04-17" "2000-04-07"
$ Emergence : Date, format: "1997-05-06" "1998-05-02" "1999-04-29" "2000-04-22"
$ FirstNode : Date, format: "1997-06-11" "1998-05-31" "1999-05-31" "2000-05-22"
$ FlagLeaf : Date, format: "1997-06-16" "1998-06-15" "1999-06-15" "2000-05-30"
$ Anthesis : Date, format: NA NA NA NA
$ Ripeness : Date, format: "1997-07-27" "1998-07-29" "1999-08-02" "2000-07-25"
$ Harvest : Date, format: "1997-08-14" "1998-09-02" "1999-08-24" "2000-08-24"
$ DOY_sow : num 5951 6320 6681 7037
$ DOY_emergence: num 19 11.2 12.2 15
$ DOY_elong : num 55 40 44 45
$ DOY_flag : num 60.5 55.6 59.6 53
$ DOY_ant : num NaN NaN NaN NaN
$ DOY_mat : num 101.5 99.7 107 109
$ DOY_har : num 119 134 129 139
我遇到以下问题:
Browse[2]> sdata$Ripeness[1]
[1] "1997-07-27"
Browse[2]> sdata$Ripeness[2]
[1] "1998-07-29"
Browse[2]> sdata$Ripeness[3]
[1] "1999-08-02"
Browse[2]> which(meteo$Date==sdata$Ripeness[1])
integer(0)
Browse[2]> which(meteo$Date==sdata$Ripeness[2])
integer(0)
Browse[2]> which(meteo$Date==sdata$Ripeness[3])
[1] 6788
Browse[2]> which(meteo$Date==sdata$Ripeness[4])
[1] 7146
Browse[2]> which(meteo$Date=="1997-07-27")
[1] 6052
Browse[2]> which(meteo$Date=="1998-07-29")
[1] 6419
Browse[2]> str(sdata$Ripeness[1])
Date[1:1], format: "1997-07-27"
Browse[2]> str(sdata$Ripeness[2])
Date[1:1], format: "1998-07-29"
由于某种原因,R不喜欢sdata $ Ripeness的前两次出现,有人遇到过这样的问题吗?如果可以,该如何解决?
答案 0 :(得分:1)
由于某种原因,R决定在日期上添加一个时间(仅当您查看POSIXct时才可见:
Browse[2]> as.POSIXct(sdata$Ripeness)
[1] "1997-07-27 14:00:00 CEST" "1998-07-29 18:00:00 CEST" "1999-08-02 02:00:00 CEST" "2000-07-25 02:00:00 CEST"
因此解决方法是:
as.Date(as.character(sdata$Ripeness))