【发布时间】:2014-07-17 12:18:07
【问题描述】:
考虑表单的数据框
idnum start end
1993.1 17 1993-01-01 1993-12-31
1993.2 17 1993-01-01 1993-12-31
1993.3 17 1993-01-01 1993-12-31
start 和 end 的类型为 Date
$ idnum : int 17 17 17 17 27 27
$ start : Date, format: "1993-01-01" "1993-01-01" "1993-01-01" "1993-01-01" ...
$ end : Date, format: "1993-12-31" "1993-12-31" "1993-12-31" "1993-12-31" ...
我想创建一个 新 数据框,改为在 start 和 end(包括边界)之间的每个月对每一行进行每月观察:
期望的输出
idnum month
17 1993-01-01
17 1993-02-01
17 1993-03-01
...
17 1993-11-01
17 1993-12-01
我不确定month 应该有什么格式,我会在某个时候想要按idnum、month 分组以对其余数据集进行回归。
到目前为止,对于每一行,seq(from=test[1,'start'], to=test[1, 'end'], by='1 month') 都为我提供了正确的顺序 - 但一旦我尝试将其应用于整个数据框,它将无法正常工作:
> foo <- apply(test, 1, function(x) seq(x['start'], to=x['end'], by='1 month'))
Error in to - from : non-numeric argument to binary operator
【问题讨论】:
-
作为
R的初学者,我应该如何判断答案?有没有办法检查它们的效率,如 Python 中的%timeit?
标签: r