R语言创建每个userid重复指定次数的数据集方法
R 构造每个ID重复3次带序号列的数据集
基础R实现(无需安装额外包)
直接用内置的rep()函数搭配data.frame()即可快速生成,代码如下:
# 初始化原始user_id向量 user_id <- c(1, 2, 3, 4, 5) # 组装目标数据集 result <- data.frame( userid = rep(user_id, each = 3), time = rep(1:3, times = length(user_id)) )
运行后输出的数据集结构完全匹配要求:
> result userid time 1 1 1 2 1 2 3 1 3 4 2 1 5 2 2 6 2 3 7 3 1 8 3 2 9 3 3 10 4 1 11 4 2 12 4 3 13 5 1 14 5 2 15 5 3
注意:
rep()的两个参数不要搞混:each = 3表示把向量中每个元素依次重复3次,刚好实现单个user_id连续占3行;times = length(user_id)表示把1-3的序号序列整体重复5次,和前面的userid行一一对应。
tidyverse实现(适合已在使用tidy生态的场景)
如果已经加载了tidyverse包,可以用expand_grid()直接做两个向量的全连接,写法更直观,结果和基础R版本完全一致:
library(tidyverse) result <- expand_grid( userid = 1:5, time = 1:3 )
内容的提问来源于stack exchange,提问作者Gloria Dalla Costa
相关产品推荐
相关产品推荐

