【问题标题】:Subsetting data table in R by date按日期对 R 中的数据表进行子集化
【发布时间】:2015-02-11 09:05:51
【问题描述】:

我需要按日期范围对我的数据进行子集化,下面是代码。

我读入了两个 .csv(data2010,data2),我更改了日期格式以排除时间戳,重命名标题,使两个文件的标题相同,然后合并(data2011)。

文件似乎实际上合并了,但是当我按日期范围进行子集化时,不会创建任何观察结果。

但是,日期分组为 01/01/10 01/01/11 01/02/10 01/02/11 = 所以同一个月/同一天/不同年份配对。

data2010 <- read.csv(file="2010final.csv")
data2 <- read.csv(file="2011final.csv") 


#change format of timestamp to date with mm/dd/yyyy for 2011
data2$newdate <-strptime(as.character(data2$Date), "%m/%d/%y")
data2$Date <- format(data2$newdate, "%m/%d/%y")
data2$newdate <- NULL

#rename and format 2010
names(data2010) <- c("Region", "District", "Age", "Gender", "Marital Status", "Date", "Reason")
data2010$newdate <-strptime(as.character(data2010$Date), "%m/%d/%y %H")
data2010$Date <- format(data2010$newdate, "%m/%d/%y")
data2010$newdate <- NULL

#merge
data2011 <- rbind(data2010, data2)

summary(data2011)
str(data2011) 
#I see from the above commands that the files have merged 

jan6Before <- subset(data2011, Date >= "12/22/10" & Date <= "01/06/11") 
summary(jan6Before)
str(jan6Before)
#But this does not produce any observations

【问题讨论】:

    标签: r date csv merge subset


    【解决方案1】:

    我怀疑这是因为您的 Date 变量是一个字符,而不是日期,与另一个字符常量(即“12/22/10”)进行比较。

    我建议你看看 lubridate 的包。然后,您可以轻松转换字符(在本例中为月-日-年)以进行比较,例如mdy(Date) &gt;= mdy("12/22/10").

    【讨论】:

      【解决方案2】:

      合并您的变量 newDate,并将其用于子集。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-25
        • 1970-01-01
        • 1970-01-01
        • 2020-10-17
        • 1970-01-01
        • 2018-12-29
        • 2021-02-01
        • 1970-01-01
        相关资源
        最近更新 更多