按R中的日期范围对data.frame进行子集设置时出现意外错误?

按R中的日期范围对data.frame进行子集设置时出现意外错误?,r,dataframe,dplyr,R,Dataframe,Dplyr,我在data.frame中获得了投影数据,该框架将所有德国气象站数据投影到德国shapefile。但是,在我的第一步中,我想提取出其开始日期和结束日期属性在1981年1月1日到2014年12月31日之间的所有行。所以我确实在原始合并的data.frame上取了子集,但不知道为什么操作失败。我在飞行中以csv格式共享原始数据。基本上,我将保留日期间隔在1981年1月1日至2014年12月31日之间的所有实例,我需要分析德国最近35年的天气数据。我很确定我的代码可以处理我的数据,但最终还是失败了。有

我在data.frame中获得了投影数据,该框架将所有德国气象站数据投影到德国shapefile。但是,在我的第一步中,我想提取出其开始日期和结束日期属性在1981年1月1日到2014年12月31日之间的所有行。所以我确实在原始合并的data.frame上取了子集,但不知道为什么操作失败。我在飞行中以csv格式共享原始数据。基本上,我将保留日期间隔在1981年1月1日至2014年12月31日之间的所有实例,我需要分析德国最近35年的天气数据。我很确定我的代码可以处理我的数据,但最终还是失败了。有什么快速的解决办法吗?我如何在R中实现这一点?dplyr、data.table是否有帮助?还有什么想法吗?谢谢

以下是原始数据源动态放置时的数据外观:

 Stationsname Stations_ID ID__Index Station.Identification   Width Length Station_Height River_Basin Federal_state
1         Aach           1        KL                  02783 47.8410 8.8490            478          NA            BW
2         Aach           1        RR                  70191 47.8410 8.8490            478          NA            BW
3   Aach/Hegau       10771        PE                  10771 47.8500 8.8500            480          NA            BW
4       Aachen           3        EB                  02205 50.7827 6.0941            202      803100            NW
5       Aachen           3        FF                  02205 50.7827 6.0941            202      803100            NW
6       Aachen           3        KL                  02205 50.7827 6.0941            202      803100            NW
       Begin        End ID_0 ISO  NAME_0 ID_1               NAME_1 ID_2                 NAME_2   HASC_2 CCN_2 CCA_2
1 01.01.1937 30.06.1986   86 DEU Germany    1 Baden-Württemberg   22               Konstanz DE.BW.KN     0  8335
2 01.01.1912 30.06.1986   86 DEU Germany    1 Baden-Württemberg   22               Konstanz DE.BW.KN     0  8335
3                         86 DEU Germany    1 Baden-Württemberg   22               Konstanz DE.BW.KN     0  8335
4 01.01.1951 31.03.2011   86 DEU Germany   10  Nordrhein-Westfalen  290 Städteregion Aachen DE.NW.AC     0  5334
5 01.01.1937 31.03.2011   86 DEU Germany   10  Nordrhein-Westfalen  290 Städteregion Aachen DE.NW.AC     0  5334
6 01.01.1891 31.03.2011   86 DEU Germany   10  Nordrhein-Westfalen  290 Städteregion Aachen DE.NW.AC     0  5334
     TYPE_2 ENGTYPE_2 NL_NAME_2 VARNAME_2
1 Landkreis  District        NA          
2 Landkreis  District        NA          
3 Landkreis  District        NA          
4     Kreis  District        NA          
5     Kreis  District        NA          
6     Kreis  District        NA
我阅读了下面的实验数据集:

joinedData <- read.csv(file = "~/joinedLayer_attrTabl.csv",sep = "," ,header = TRUE)
head(as.data.frame(joinedData)); tail(as.data.frame(joinedData))
joinedData[joinedData$Begin & joinedData$End %between% c("01.01.1981", "31.12.2014"),]
尽管如此,我还是没有得到预期的结果。为什么这个错误发生在我身上?有什么想法吗

输出:


我将选择开始和结束数据在指定日期间隔内的所有行。有办法解决这个问题吗?我怎样才能做到这一点

我可以在OP的代码中看到几个问题

问题1:as.Date所需的默认格式为%Y-%m-%d或%Y/%m/%d。但代码中使用的字符开始、结束列的格式为%d.%m.%Y或%s-%m-%Y。因此函数as.Date中的默认格式将不起作用。format参数应该专门提供给as.Date函数

创建DATE1和DATE2的正确代码应为:

DATE1 <- as.Date("01-01-1981", format = "%d-%m-%Y")
DATE2 <- as.Date("31-12-2014", , format = "%d-%m-%Y")
现在,OP'2的初始方法应该可以工作了


注意:就我个人而言,我更喜欢使用as.POSIXlt而不是as.Date

现在这看起来像是的副本。你能编辑你的问题吗?也许包括你得到的错误,以区别于那个问题吗?@SamFirke谢谢你的评论。是的,我附加了错误和我的会话信息。有什么快速的解决办法吗?非常感谢。
joinedData[joinedData$Begin & joinedData$End %between% c("01.01.1981", "31.12.2014"),]
DATE1 <- as.Date("01-01-1981", format = "%d-%m-%Y")
DATE2 <- as.Date("31-12-2014", , format = "%d-%m-%Y")
joinedData$Begin = as.Date(joinedData$Begin, format = "%d.%m.%Y")
joinedData$End= as.Date(joinedData$End, format = "%d.%m.%Y")