R 为每个级别的因子添加日期时间序列
我有一个带有因子列的数据帧:R 为每个级别的因子添加日期时间序列,r,R,我有一个带有因子列的数据帧: s<- data.frame( id = 901:910) s$id<-as.factor(s$id) s作为expand.grid(id=s$id,time=t)的替代方法,您还可以使用数据的CJ(交叉连接)。表包: CJ(s$id,t) 其中: V1 V2 1: 901 2015-09-19 14:52:23 2: 901 2015-09-19 14:53:23 3: 901 2015
s<- data.frame( id = 901:910)
s$id<-as.factor(s$id)
s作为expand.grid(id=s$id,time=t)
的替代方法,您还可以使用数据的CJ
(交叉连接)。表
包:
CJ(s$id,t)
其中:
V1 V2
1: 901 2015-09-19 14:52:23
2: 901 2015-09-19 14:53:23
3: 901 2015-09-19 14:54:23
4: 901 2015-09-19 14:55:23
5: 901 2015-09-19 14:56:23
---
596: 910 2015-09-19 15:47:23
597: 910 2015-09-19 15:48:23
598: 910 2015-09-19 15:49:23
599: 910 2015-09-19 15:50:23
600: 910 2015-09-19 15:51:23
> s
id V2
1: 901 2015-09-19 15:08:39
2: 901 2015-09-19 15:09:39
3: 901 2015-09-19 15:10:39
4: 901 2015-09-19 15:11:39
5: 901 2015-09-19 15:12:39
---
596: 910 2015-09-19 16:03:39
597: 910 2015-09-19 16:04:39
598: 910 2015-09-19 16:05:39
599: 910 2015-09-19 16:06:39
600: 910 2015-09-19 16:07:39
如果要将其添加到s
,可以执行以下连接操作:
s <- setDT(s, key="id")[CJ(s$id,t)]
另一个选项是使用tidyr
中的交叉
-功能:
library(tidyr)
crossing(id = s$id, time = t)
这给出了类似的结果。作为扩展.grid(id=s$id,time=t)的替代方法,您还可以使用数据的CJ
(交叉连接)。表包:
CJ(s$id,t)
其中:
V1 V2
1: 901 2015-09-19 14:52:23
2: 901 2015-09-19 14:53:23
3: 901 2015-09-19 14:54:23
4: 901 2015-09-19 14:55:23
5: 901 2015-09-19 14:56:23
---
596: 910 2015-09-19 15:47:23
597: 910 2015-09-19 15:48:23
598: 910 2015-09-19 15:49:23
599: 910 2015-09-19 15:50:23
600: 910 2015-09-19 15:51:23
> s
id V2
1: 901 2015-09-19 15:08:39
2: 901 2015-09-19 15:09:39
3: 901 2015-09-19 15:10:39
4: 901 2015-09-19 15:11:39
5: 901 2015-09-19 15:12:39
---
596: 910 2015-09-19 16:03:39
597: 910 2015-09-19 16:04:39
598: 910 2015-09-19 16:05:39
599: 910 2015-09-19 16:06:39
600: 910 2015-09-19 16:07:39
如果要将其添加到s
,可以执行以下连接操作:
s <- setDT(s, key="id")[CJ(s$id,t)]
另一个选项是使用tidyr
中的交叉
-功能:
library(tidyr)
crossing(id = s$id, time = t)
这给出了类似的结果。作为扩展.grid(id=s$id,time=t)的替代方法,您还可以使用数据的CJ
(交叉连接)。表包:
CJ(s$id,t)
其中:
V1 V2
1: 901 2015-09-19 14:52:23
2: 901 2015-09-19 14:53:23
3: 901 2015-09-19 14:54:23
4: 901 2015-09-19 14:55:23
5: 901 2015-09-19 14:56:23
---
596: 910 2015-09-19 15:47:23
597: 910 2015-09-19 15:48:23
598: 910 2015-09-19 15:49:23
599: 910 2015-09-19 15:50:23
600: 910 2015-09-19 15:51:23
> s
id V2
1: 901 2015-09-19 15:08:39
2: 901 2015-09-19 15:09:39
3: 901 2015-09-19 15:10:39
4: 901 2015-09-19 15:11:39
5: 901 2015-09-19 15:12:39
---
596: 910 2015-09-19 16:03:39
597: 910 2015-09-19 16:04:39
598: 910 2015-09-19 16:05:39
599: 910 2015-09-19 16:06:39
600: 910 2015-09-19 16:07:39
如果要将其添加到s
,可以执行以下连接操作:
s <- setDT(s, key="id")[CJ(s$id,t)]
另一个选项是使用tidyr
中的交叉
-功能:
library(tidyr)
crossing(id = s$id, time = t)
这给出了类似的结果。作为扩展.grid(id=s$id,time=t)的替代方法,您还可以使用数据的CJ
(交叉连接)。表包:
CJ(s$id,t)
其中:
V1 V2
1: 901 2015-09-19 14:52:23
2: 901 2015-09-19 14:53:23
3: 901 2015-09-19 14:54:23
4: 901 2015-09-19 14:55:23
5: 901 2015-09-19 14:56:23
---
596: 910 2015-09-19 15:47:23
597: 910 2015-09-19 15:48:23
598: 910 2015-09-19 15:49:23
599: 910 2015-09-19 15:50:23
600: 910 2015-09-19 15:51:23
> s
id V2
1: 901 2015-09-19 15:08:39
2: 901 2015-09-19 15:09:39
3: 901 2015-09-19 15:10:39
4: 901 2015-09-19 15:11:39
5: 901 2015-09-19 15:12:39
---
596: 910 2015-09-19 16:03:39
597: 910 2015-09-19 16:04:39
598: 910 2015-09-19 16:05:39
599: 910 2015-09-19 16:06:39
600: 910 2015-09-19 16:07:39
如果要将其添加到s
,可以执行以下连接操作:
s <- setDT(s, key="id")[CJ(s$id,t)]
另一个选项是使用tidyr
中的交叉
-功能:
library(tidyr)
crossing(id = s$id, time = t)
这给出了类似的结果。也许expand.grid(id=s$id,time=t)
也许expand.grid(id=s$id,time=t)
也许expand.grid(id=s$id,time=t)
非常感谢,两种方法中哪一种更有效efficient@datashinobi在这种情况下,对于id小于1000的数据帧,基本R方法更快。对于更大的数据集,data.table
方法更快。非常感谢,两种方法中哪一种更有效efficient@datashinobi在这种情况下,对于id小于1000的数据帧,基本R方法更快。对于更大的数据集,data.table
方法更快。非常感谢,两种方法中哪一种更有效efficient@datashinobi在这种情况下,对于id小于1000的数据帧,基本R方法更快。对于更大的数据集,data.table
方法更快。非常感谢,两种方法中哪一种更有效efficient@datashinobi在这种情况下,对于id小于1000的数据帧,基本R方法更快。对于更大的数据集,data.table
方法更快。