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

如何在R中为每组两位个体随机分配0/1且组内和为1?

R语言实现组内随机分配0/1(组内和为1)

针对你每组2个个体、要求组内Random_var和为1的需求,这里提供两种简单的实现方式:

方法一:使用dplyr包(tidyverse风格)

先构造示例数据,再按组随机分配1和0:

# 构造示例数据(可替换为你的实际数据)
df <- expand.grid(ID_GROUP = 1:5, ID_INDIVIDUAL = 1:2)

library(dplyr)

# 按组分配随机值
df_result <- df %>%
  group_by(ID_GROUP) %>%
  # 对每组的两个个体随机打乱1和0的顺序
  mutate(Random_var = sample(c(1, 0), size = n(), replace = FALSE)) %>%
  ungroup()

方法二:基础R实现(无需额外包)

如果不想加载第三方包,用基础R的拆分-处理-合并流程:

# 构造示例数据
df <- expand.grid(ID_GROUP = 1:5, ID_INDIVIDUAL = 1:2)

# 按组拆分数据框
df_groups <- split(df, df$ID_GROUP)
# 对每个组分配随机值
df_processed <- lapply(df_groups, function(group_df) {
  group_df$Random_var <- sample(c(1, 0), 2)
  group_df
})
# 合并回单个数据框
df_result <- do.call(rbind, df_processed)

验证结果

可以通过以下代码确认每组的Random_var和是否为1:

# dplyr方式验证
df_result %>%
  group_by(ID_GROUP) %>%
  summarise(sum_random_var = sum(Random_var))

# 基础R方式验证
aggregate(Random_var ~ ID_GROUP, data = df_result, sum)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:47:02