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

在R语言中扩展DataFrame并设置对应数量的Dummy_N值

R语言实现按组扩展数据并设置Dummy_N列的1/0数量

首先构造原始数据框方便复现:

df <- data.frame(
  Group = c(1, 2),
  Dummy_N = c(1, 2),
  Total_N = c(4, 3),
  `Other val` = c("x", "y")
)

方法1:基于你现有代码修正

你已经通过rep完成了行扩展,但Dummy_N列还保留原始值,只需按每组的Dummy_N和Total_N生成对应数量的1和0即可:

# 你的行扩展代码
df.expanded <- df[rep(row.names(df), df$Total_N), 1:4]

# 重新生成Dummy_N列的数值
df.expanded$Dummy_N <- unlist(lapply(1:nrow(df), function(i) {
  # 先填指定数量的1,再填剩余数量的0
  c(rep(1, df$Dummy_N[i]), rep(0, df$Total_N[i] - df$Dummy_N[i]))
}))

方法2:用tidyverse工具一步完成

如果习惯用tidyverse生态,用dplyr+tidyr可以更简洁地一步生成目标数据:

library(dplyr)
library(tidyr)

df.expanded <- df %>%
  rowwise() %>%
  # 按行生成包含1和0的向量列表
  mutate(Dummy_N = list(c(rep(1, Dummy_N), rep(0, Total_N - Dummy_N)))) %>%
  # 将列表展开为多行
  unnest(Dummy_N)

两种方法最终生成的结果都和你给出的示例一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:47:27