如何在R中生成行和为100%的5%增量全组合DataFrame
生成符合条件的R DataFrame方案
要生成包含Blue、Red、Yellow、Green四列,每行和为100%且数值为5%增量的所有组合,可按以下步骤操作:
思路转换
由于所有数值都是5%的倍数,我们可以先将问题简化为非负整数求和问题:把每个百分比除以5,得到的整数需满足 a + b + c + d = 20(因为100/5=20),最后再将结果乘以5还原为百分比。
代码实现
# 生成0到20的整数序列(对应0%到100%,步长5%) values <- 0:20 # 生成Blue、Red、Yellow三列的所有可能组合 temp_df <- expand.grid(Blue = values, Red = values, Yellow = values) # 计算Green列的取值,确保四列整数之和为20 temp_df$Green <- 20 - temp_df$Blue - temp_df$Red - temp_df$Yellow # 筛选出Green非负的合法行(排除负数百分比) valid_df <- temp_df[temp_df$Green >= 0, ] # 将整数转换为百分比(乘以5) final_df <- valid_df * 5
验证结果
运行上述代码后,final_df 就包含了所有符合要求的组合,比如示例中的95 5 0 0对应整数组合19 1 0 0,满足19+1+0+0=20,转换后即为目标百分比。
内容的提问来源于stack exchange,提问作者Jennifer
相关产品推荐
相关产品推荐

