R中如何按前两列行和顺序遍历数据框并为第三列赋值
R实现代码
# 构造初始数据框 df <- data.frame( Col1 = c(20, 5, 20, 0, 20, 10, 20, 15), Col2 = c(0, 0, 0, 10, 0, 0, 40, 0), Col3 = NA_integer_ ) # 计算每行前两列之和 df$row_sum <- df$Col1 + df$Col2 # 按行和从小到大获取行索引 sorted_idx <- order(df$row_sum) # 按规则为Col3赋值 df$Col3[sorted_idx[1:3]] <- 20 df$Col3[sorted_idx[4:7]] <- 10 df$Col3[sorted_idx[8]] <- 5 # 删除临时计算的行和列(按需选择) df <- df[, !colnames(df) %in% "row_sum"]
最终结果数据框
| Col1 | Col2 | Col3 |
|---|---|---|
| 20 | 0 | 10 |
| 5 | 0 | 20 |
| 20 | 0 | 10 |
| 0 | 10 | 20 |
| 20 | 0 | 10 |
| 10 | 0 | 20 |
| 20 | 40 | 5 |
| 15 | 0 | 10 |
验证逻辑:行和从小到大对应的行依次为第2行(和为5)、第4行(和为10)、第6行(和为10)、第8行(和为15)、第1行(和为20)、第3行(和为20)、第5行(和为20)、第7行(和为60),和赋值规则完全匹配。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

