首页 > 解决方案 > 创建一个可以帮助我区分组更改的变量

问题描述

我有以下数据。我想制作变量 1 和变量 2。请查看此 png,您将看到我拥有的数据以及我想要制作的数据 所需数据

我想使用 R,这样我就可以制作想要的变量 1,它为每次变量“输入”出现并且不为空时创建一个组变量(如示例图片所示)。然后我想使用 Dplyr 来创建变量 2,它基本上是在组内进行差异。我想我可以通过以下方式做到这一点

df %>% group_by(Group, variable wanted 1) %>% mutate(variable2 = diff(df, lag=1))

但正如你所看到的,我在制作变量“Variable Wanted 1”时遇到了麻烦。我希望我能充分解释自己,如果没有,我很乐意编辑。谢谢您的帮助!

df <- structure(list(Group = c(1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 
3, 3), Output = c(2, 3, 4, 5, 3, 4, 6, 7, 9, 10, 1, 4, 6, 8), 
    Input = c(NA, "a", NA, "b", NA, "a", NA, "b", NA, "c", NA, 
    "a", NA, "b")), row.names = c(NA, -14L), class = c("tbl_df", 
"tbl", "data.frame"))

标签: rsyntaxdata-analysis

解决方案


你可以试试

df %>%
  group_by(Group) %>%
  mutate(var_1 = rep(1:(n()/2), each = 2) ) %>%
  mutate(var_2 = ifelse(is.na(Input), "NA", Output - lag(Output, 1) ))

   Group Output Input var_1 var_2
   <dbl>  <dbl> <chr> <int> <chr>
 1     1      2 NA        1 NA   
 2     1      3 a         1 1    
 3     1      4 NA        2 NA   
 4     1      5 b         2 1    
 5     2      3 NA        1 NA   
 6     2      4 a         1 1    
 7     2      6 NA        2 NA   
 8     2      7 b         2 1    
 9     2      9 NA        3 NA   
10     2     10 c         3 1    
11     3      1 NA        1 NA   
12     3      4 a         1 3    
13     3      6 NA        2 NA   
14     3      8 b         2 2 

推荐阅读