2

我已经开始使用 data.table。确实,它非常快且语法非常好。我在约会方面遇到了麻烦。我喜欢使用润滑脂。在我的许多数据集中,我都有日期或日期和时间,并使用 lubridate 来操纵它们。Lubridate 将瞬间存储为 POSIX 类。我在这里看到了创建新变量的答案,例如只是为了获得年份,例如。2005. 我不喜欢那样。有时我会按年分析,有时按季度分析,有时按月分析,有时按持续时间分析。我想做一些简单的事情,比如这样

mydatatable[,length(medical.record.number),by=year(date.of.service)]

那应该给我在给定年份遇到的患者数量。by 函数不起作用。

Error in names(byval) = as.character(bysuborig) : 
  'names' attribute [2] must be the same length as the vector [1]

你能指出我在哪里使用 data.tables 和日期以及这些日期的操作和分类是在哪里进行的小插曲。

4

1 回答 1

3

这使用help(IDateTime)页面中的示例之一。它表明您可以更改格式为by=“=”形式的字符值的参数的语法,或者(在下面@Matthew Dowle 的评论之后)您可以尝试使用您正在使用的函数形式(尽管我无法让它自己工作。我确实得到了首选形式:by=list(wday=wday(idate))工作。)请注意,密钥创建假定一个 IDateTime 类,因为没有idateitime变量。这些是类的属性

datetime <- seq(as.POSIXct("2001-01-01"), as.POSIXct("2001-01-03"), by = "5 hour")    
(af <- data.table(IDateTime(datetime), a = rep(1:2, 5), key = "a,idate,itime"))

 af[, length(a), by = "wday = wday(idate)"]
         wday V1
[1,]    2  4
[2,]    3  5
[3,]    4  1
于 2011-11-22T02:32:13.070 回答