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

R中使用dplyr创建非空Input标记分组变量计算组内差值的问题

R实现分组标记与组内差值计算的解决方案

生成第一个目标变量(Variable wanted 1)

你需要的分组标记可以通过cumsum累加非空判断结果实现,且要保证每个Group的计数独立,代码如下:

library(dplyr)
df <- df %>%
  group_by(Group) %>%
  mutate(`variable wanted 1` = cumsum(!is.na(Input))) %>%
  ungroup()

逻辑说明:!is.na(Input)会在Input为非空值时返回TRUE(等价数值1),空值时返回FALSE(等价数值0),累加后每遇到非空Input就会自动+1生成新的分组编号。

生成第二个目标变量(Variable 2)

你原代码的问题有两处:一是带空格的变量名需要用反引号包裹,二是diff需要直接针对Output列计算,修正后的完整代码如下:

df_final <- df %>%
  group_by(Group, `variable wanted 1`) %>%
  # 若需要组内第一行差值为NA,可去掉default参数
  mutate(variable2 = Output - lag(Output, default = first(Output))) %>%
  ungroup()

运行结果验证

生成的最终数据结构如下:

# A tibble: 14 × 5
   Group Output Input `variable wanted 1` variable2
   <dbl>  <dbl> <chr>               <int>     <dbl>
 1     1      2 NA                      0         0
 2     1      3 a                       1         0
 3     1      4 NA                      1         1
 4     1      5 b                       2         0
 5     2      3 NA                      0         0
 6     2      4 a                       1         0
 7     2      6 NA                      1         2
 8     2      7 b                       2         0
 9     2      9 NA                      2         2
10     2     10 c                       3         0
11     3      1 NA                      0         0
12     3      4 a                       1         0
13     3      6 NA                      1         2
14     3      8 b                       2         0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:36:04