我正在研究一个数据框架,该框架由过去的棒球运动员组成,其中包括1871年至2016年的比赛记录.DF名称为Master.new 我想要做的就是让那些在1903年之后首次亮相的人。("首次亮相"专栏名称) 在运行代码以删除不需要的行之后,新的DF擦除了比它应该更多的东西,我知道因为汇总命令。
我所做的是
确保"首次亮相"列是"日期"
sapply(Master.new, class)
这是结果
playerID birthYear debut finalGame "character" "integer" "Date" "Date"
运行summary命令检查结构,在这里我可以看到日期范围并验证第一个日期是在1871年(19105观察)
summary(Master.new)
这就是结果
playerID birthYear debut finalGame
Length:19105 Min. :1820 Min. :1871-05-04 Min. :1871-05-05
Class :character 1st Qu.:1895 1st Qu.:1919-04-24 1st Qu.:1923-04-29
Mode :character Median :1937 Median :1961-06-09 Median :1966-10-02
Mean :1931 Mean :1956-02-23 Mean :1960-12-20
3rd Qu.:1969 3rd Qu.:1995-04-26 3rd Qu.:2000-09-29
Max. :1996 Max. :2016-10-02 Max. :2016-10-02
NA's :132 NA's :195 NA's :195
3.我运行命令只选择变量的记录"首次亮相"大于或早于1903-01-01创建一个名为Master.new.debut的新DF,其观测值为7899,低于Master.new的19105,这似乎是合乎逻辑的,因为我正在消除1903年以前的行数。
Master.new.debut <- Master.new[Master.new $debut >= 1903-01-01,]
然后我在新数据框Master.new.debut
上运行了summary命令summary(Master.new.debut)
以下是我收到的内容。 我预计确认第一批记录必须在1903年。 我得到的是Min的记录。价值是在1975年。 我需要的帮助是弄清楚为什么不是我1903年的第一张唱片,以及1903年至1975年间所有唱片都发生了什么。
谢谢 哈维尔
playerID birthYear debut finalGame Length:7899 Min. :1946 Min. :1975-04-07 Min. :1975-04-21 Class :character 1st Qu.:1964 1st Qu.:1988-09-02 1st Qu.:1994-07-31 Mode :character Median :1974 Median :1999-05-14 Median :2005-04-21 Mean :1973 Mean :1998-04-21 Mean :2003-04-21 3rd Qu.:1983 3rd Qu.:2008-07-13 3rd Qu.:2013-09-29 Max. :1996 Max. :2016-10-02 Max. :2016-10-02 NA's :195 NA's :195 NA's :195
答案 0 :(得分:0)
问题出在下面一行:
Master.new.debut <- Master.new[Master.new $debut >= 1903-01-01,]
原因是1903-01-01
部分被视为绝对数字,因为date
也被存储为1970-01-01的偏移量。因此,>=
操作是比较日期的偏移值。 1901
大约相当于5年。因此,它显示1975
之后的日期。
请将行更改为:
Master.new.debut <- Master.new[Master.new $debut >= '1903-01-01',]
强制进行日期比较。您甚至可以使用as.Date()
函数在日期转换字符串文字。