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
方法更快。