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

如何基于var1和var2创建含二进制变量的表格?

解决方案

你可以用R里的tidyverse工具包或者基础R函数来实现这个需求,下面是两种实用的方法:

方法一:使用tidyverse(dplyr + tidyr)

先假设你的原始数据集是这样的(示例):

df <- data.frame(var1 = c(10, 5), var2 = c(3, 2))

运行以下代码生成目标表格:

library(dplyr)
library(tidyr)

# 按行处理,生成二进制列表后展开成行
result <- df %>%
  rowwise() %>%
  # 为每行生成包含var2个1和(var1-var2)个0的列表
  mutate(binary = list(c(rep(1, var2), rep(0, var1 - var2)))) %>%
  # 将每行拆成var1行
  uncount(var1) %>%
  # 把列表中的二进制值拆成单独列
  unnest(binary)

方法二:使用基础R函数

同样基于上面的示例数据集,用基础R实现:

# 用lapply批量生成每个行对应的二进制向量
binary_list <- lapply(1:nrow(df), function(i) {
  c(rep(1, df$var2[i]), rep(0, df$var1[i] - df$var2[i]))
})

# 把所有向量合并成数据框
result <- data.frame(binary = unlist(binary_list))

两种方法都能自动处理特殊情况:比如var1等于var2时生成全1的行,var2为0时生成全0的行。

内容的提问来源于stack exchange,提问作者Marta Román

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:15:14