如何在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
相关产品推荐
相关产品推荐

