【发布时间】:2014-04-13 22:27:07
【问题描述】:
我有一个巨大的data.frame,其示例如下所示:
df <- read.table(header=TRUE, text="
id BSheetyearlag sd
1001 Mar-1997 0.50
1001 Mar-1997 0.40
1001 Mar-1997 0.30
1001 Mar-1997 0.20
1001 Mar-1997 0.10
1001 Mar-1998 0.20
1001 Mar-1998 0.30", stringsAsFactors=FALSE)
我想将sd 列滞后 4 天,然后运行以下代码:
df <- as.data.table(df)
df[, lag_sd := lag(as.zoo(sd), k=4, na.pad=T), by=c("id", "BSheetyearlag")]
运行良好。但是,当我想继续或查看我的data.frame 的外观时(例如使用head 函数):
df <- as.data.frame(df)
head(df)
我收到以下错误:
order(x, ..., na.last = na.last, decreasing = decreasing)中的错误: 参数 1 不是向量
有人知道为什么会这样吗?
这是sessionInfo() 的输出:
> sessionInfo()
R version 3.0.3 (2014-03-06)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods
other attached packages:
[1] pROC_1.7.1 gdata_2.13.2 TTR_0.22-0 xts_0.9-7
[5] zoo_1.7-11 data.table_1.9.2 nleqslv_2.1.1 plyr_1.8.1
loaded via a namespace (and not attached):
[1] grid_3.0.3 gtools_3.3.1 lattice_0.20-27 Rcpp_0.11.1
[5] reshape2_1.2.2 stringr_0.6.2
【问题讨论】:
-
亲爱的 Arun,我已将其添加为已编辑
-
df 是一个 data.table,而不是一个 data.frame。也许你必须做
head(as.data.table(df))?对此进行试验并查找特定于 data.table 的问题。另外,你应该标记这个data.table -
但在使用 head 函数之前,我正在更改 df,从数据表到数据框。感谢您的评论,我现在将对其进行编辑。
-
需要可重复的示例...使用
dput()导出df 的小sn-p,或者使用runif/rnorm()为我们创建一个虚拟示例。
标签: r data.table lag zoo