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

如何在R语言中按ID分组与指定规则生成Bin和Zero列

给R数据框新增Bin和Zero列的实现方法

原始数据

A="01-03"
B="04-06"
C="07-09"
D="10-11"

data <- read.table(text = " ID   Class   Time1   Time2   Time3
        1   1   1   3   3
        2   1   4   3   2
        3   1   2   2   2
        1   2   1   4   1
        2   3   2   1   1
        3   2   3   2   3
        1   3   1   1   2
        2   2   4   3   1
        3   3   3   2   1
        1   1   4   3   2
        2   1   2   2   2
        3   2   1   4   1
        ", header = TRUE)

需求说明

  • 在Class列后新增两列:Bin和Zero
    • Bin列:按数据行分组匹配区间,前3行对应01-03,接下来3行对应04-06,再接下来3行对应07-09,最后3行对应10-11
    • Zero列:所有值固定为0

解决方案

方法1:Base R实现

# 定义Bin的区间标签
bin_labels <- c("01-03", "04-06", "07-09", "10-11")

# 新增Bin列,按每组3行重复标签
data$Bin <- rep(bin_labels, each = 3)
# 新增Zero列,值全为0
data$Zero <- 0
# 调整列顺序,将Bin和Zero移至Class之后
data <- data[, c("ID", "Class", "Bin", "Zero", "Time1", "Time2", "Time3")]

方法2:dplyr包实现

如果习惯tidyverse风格,可用dplyr处理:

library(dplyr)

bin_labels <- c("01-03", "04-06", "07-09", "10-11")

data <- data %>%
  mutate(Bin = rep(bin_labels, each = 3),
         Zero = 0) %>%
  select(ID, Class, Bin, Zero, everything())

处理后结果

运行上述代码后,数据框内容如下:

ID Class    Bin Zero Time1 Time2 Time3
  1     1 01-03    0     1     3     3
  2     1 01-03    0     4     3     2
  3     1 01-03    0     2     2     2
  1     2 04-06    0     1     4     1
  2     3 04-06    0     2     1     1
  3     2 04-06    0     3     2     3
  1     3 07-09    0     1     1     2
  2     2 07-09    0     4     3     1
  3     3 07-09    0     3     2     1
  1     1 10-11    0     4     3     2
  2     1 10-11    0     2     2     2
  3     2 10-11    0     1     4     1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:00:57