gpt4 book ai didi

R 不理解子集中的日期

转载 作者:行者123 更新时间:2023-12-01 20:19:10 25 4
gpt4 key购买 nike

我的代码有一个小问题,我不明白。我已经使用 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 的前两次出现,有人遇到过这样的问题吗?如果是这样,如何解决这个问题?

最佳答案

出于某种原因,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))

关于R 不理解子集中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57035290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com