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

如何在已分组的R数据框中按组添加指定列值?

按分组为每组添加指定序列的列

原始数据框

dat=structure(list(A = c("n", "n", "F", "F"), Par = c(1, 1, 8, 3), var = c(1, 10, 1,5), dat = c("T", "T", "T", "T")), row.names = c(NA, 4L), class = "data.frame")

需求

按A列分组,为每个组的两行分别添加"40-25"和"25-200"作为ye列的值。

尝试的错误代码

dat%>%group_by(A)%>% mutate(ye = c( "40-25", "25-200"))

错误信息

! Assigned data value must be compatible with existing data.
✖ Existing data has 4 rows.
✖ Assigned data has 2 rows.
ℹ Only vectors of size 1 are recycled.
Run rlang::last_error() to see where the error occurred.

期望输出

A Par var dat     ye
  1 n   1   1   T  "40-25"
  2 n   1  10   T  "25-200"
  3 F   8   1   T  "40-25"
  4 F   3   5   T  "25-200" 

正确实现方法

方法1:利用row_number()判断组内行号赋值

library(dplyr)

dat %>%
  group_by(A) %>%
  mutate(ye = ifelse(row_number() == 1, "40-25", "25-200")) %>%
  ungroup()

方法2:通过索引匹配组内行号

dat %>%
  group_by(A) %>%
  mutate(ye = c("40-25", "25-200")[row_number()]) %>%
  ungroup()

方法3:针对固定每组2行的情况重复序列

dat %>%
  group_by(A) %>%
  mutate(ye = rep(c("40-25", "25-200"), n()/2)) %>%
  ungroup()

以上三种方法均能得到期望输出,其中方法1和2更通用,可适配组内行数变化的场景;若确定每组固定为2行,三种方法均可使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:50:25