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

如何用dplyr生成首行值为14的累加变量var2?

解决R语言dplyr生成var2列的首行值不符合预期问题

你的问题核心是首行需要单独赋值14,其余行取首行var值与当前行var值之和,而当前代码中first(var) + var会对所有行执行加法,首行自然得到14+14=28,不符合需求。

可以用dplyr的case_when()函数实现条件赋值,针对首行(或obs=="a"的行)单独设置值,其余行执行加法逻辑:

library(dplyr)

data_a <- read.csv(text = "
obs,var
a, 14
b, 124
c, 180
d, 40
e, 20
") 

data_b <- data_a %>%
  mutate(var2 = case_when(
    row_number() == 1 ~ 14,  # 定位首行赋值14
    TRUE ~ first(var) + var   # 其余行执行首行var加当前var
  ))

# 若obs列的"a"固定对应首行,也可以用obs判断:
# data_b <- data_a %>%
#   mutate(var2 = case_when(
#     obs == "a" ~ 14,
#     TRUE ~ first(var) + var
#   ))

运行后得到的data_b结果如下:

obs var var2
1   a  14   14
2   b 124  138
3   c 180  194
4   d  40   54
5   e  20   34

完全符合期望:首行var2为14,其余行是首行var(14)与当前行var的和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:45:39