2014-09-18 121 views
0

好吧,所以我想分别为6月,7月和8月的这些数据。我使用as.Date函数将日期转换为类“Date”。R - 如何按月对数据集进行子集划分?

BG.data$Date <- as.Date(BG.data$TIMESTAMP, format = "%d/%m/%Y") 

接下来,我尝试在七月份选择开始和结束日期子集的数据。

July <- selectByDate(BG.data$Date, start = "1/7/2014", end = "31/7/2014") 

我不断收到此错误消息。

Error in as.Date.default(date) : 
do not know how to convert 'date' to class “Date” 

为什么?? !!!?我有我想要在课程日期的子集,所以我不知道为什么它不会工作!

+0

您可能会发现'lubridate'软件包比基于R的日期更容易。 – 2014-09-18 17:24:46

+0

该软件包中的哪些函数? – 2014-09-18 17:28:29

+1

我不知道'selectByDate'是如何工作的,但是你的'start'和'end'日期是格式化的,'%d /%m /%Y',而'Date'类日期格式为'%Y-%m - %d' – Henrik 2014-09-18 17:31:17

回答

0

为了简单起见,尽量月保存为一个新列和使用:

BG.data$month <- factor(format(data.new$timestamp, "%B"), 
         levels = month.name) 

然后,您可以用这个循环:

for (month in unique(BG.data$month)){ 
# get the subset 
BG.subset <- BG.data[,BG.data$month == month] 
# now do something with that subset 
} 

你也可以用它聚合:

aggregate(something ~ month, 
      data = BG.data, 
      FUN = function(x){ # custom function }) 

等等。

+1

谢谢你,先生,你是老板 – 2014-09-18 17:34:10

+0

@NickDriscoll:不用担心。如果这很有用,您可以投票(答案左侧的箭头)或选择此项作为首选答案(在答案左侧打勾)。这就是我得到我的温暖和模糊。谢谢! – 2014-09-18 18:53:36

相关问题