You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中从指定row1值开始为重复组生成重复序列的row2变量

实现R数据框中按规则生成新变量row2的方法

首先给出初始数据:

row1 <- c(1,1,2,
          3,4,4,4,5,5,6,6,6,
          7,7,8,8,9,9,9,10,
          11,11,11,12,13,13)
dat1 <- data.frame(row1)

方法一:使用dplyr包

如果还没安装dplyr,先执行安装命令:

install.packages("dplyr")

加载包后按以下步骤处理:

library(dplyr)

dat1 <- dat1 %>%
  # 为row1>=3的每个唯一值分配顺序组号
  mutate(group_num = ifelse(row1 < 3, NA, as.integer(factor(row1, levels = unique(row1[row1 >= 3]))))) %>%
  # 按组号循环生成3-6的序列
  mutate(row2 = case_when(
    row1 < 3 ~ row1,
    TRUE ~ ((group_num - 1) %% 4) + 3
  )) %>%
  # 移除临时组号列(可选操作)
  select(-group_num)

方法二:使用Base R

无需额外安装包,直接用基础函数实现:

# 提取row1>=3的唯一值,保留出现顺序
unique_vals <- unique(dat1$row1[dat1$row1 >= 3])
# 给每个row1值匹配对应的组序号
group_num <- match(dat1$row1, unique_vals)
# 生成row2变量
dat1$row2 <- ifelse(dat1$row1 < 3, dat1$row1, ((group_num - 1) %% 4) + 3)

执行以上任意一种方法后,dat1的row2列就会符合需求:当row1为1或2时与row1取值一致,从row1=3开始,按row1的重复组循环使用3-6的序列,最后一段序列允许不完整。

内容的提问来源于stack exchange,提问作者denis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:52:40