首页 文章

使用在R中自己创建的数组来子集数据帧

提问于
浏览
0

很抱歉,我不知道如何在 Headers 中描述我的问题 .

我的问题是

我有一个数据框如下

| id | content | created_at          |
|----|---------|---------------------|
| 1  | hello   | 2014-12-10 00:00:00 |
| 2  | world   | 2013-11-11 00:00:00 |
| 3  | oh~no   | 2012-10-10 00:00:00 |
| 4  | helpme  | 2011-09-11 00:00:00 |

我希望按时间间隔对此帧进行子集化

例如:

  • subset:2011 - 2012

| 4 | helpme | 2011-09-11 00:00:00 |

  • subset:2012 - 2013

| 3 |哦〜不| 2012-10-10 00:00:00 |

  • 子集:2013年 - 2014年

| 2 |世界| 2013-11-11 00:00:00 |

  • 子集:2014年 - 2015年

| 1 |你好| 2014-12-10 00:00:00 |

以下是我尝试解决此问题的方法

  • 我尝试创建一个true,false数组并在每一行中执行
ifelse( 

 difftime(DF$created_at,as.Date(ISOdate(seq(2004,2014),1,1))) >= 0 & 

 difftime(DF$created_at,as.Date(ISOdate(seq(2005,2015),1,1))) < 0

 , assign_to_subset_X, do_nothing)

但....

我认为这不是一个好主意,特别是我已经使用过R ....

然后我找到了一些解决方案,比如申请

apply(DF, 2, do_a_function_to_subset)

但我仍然不知道写这个功能

请给我一个提示 .

1 回答

  • 1

    这是一种可能的解决方案

    library(lubridate)
    df <- read.table(textConnection("  id | content | created_at          
     1  | hello   | 2014-12-10 00:00:00 
     2  | world   | 2013-11-11 00:00:00 
     3  | oh~no   | 2012-10-10 00:00:00 
     4  | helpme  | 2011-09-11 00:00:00 "), header=TRUE, sep="|")
    
    
    df$ts <- ymd_hms(df$created_at)
    
    ## create an interval
    myInt <- ymd("2011-01-01") %--% ymd("2011-12-31")
    df[df$ts %within% myInt, ]
    

相关问题