r - 创建一个可以帮助我区分组更改的变量
问题描述
我有以下数据。我想制作变量 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"))
解决方案
你可以试试
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
推荐阅读
- python - django 服务器拒绝本地主机上的连接
- swift - 使用 NSTintConfiguration 自定义侧边栏
- reactjs - 如何在数组中创建一个新对象
- javascript - 覆盖类实例方法有什么问题吗?
- php - 如何使用 VUE 在 Laravel Blade 中显示数据库信息
- algorithm - 按位与和按位或对数字进行运算
- vaadin - Vaadin 14 TreeGrid - 不能多次添加同一个项目
- javascript - Discord bot Embed 未按我的意愿返回文本
- symbols - 当我尝试在pycharm中输入反斜杠时获取日元符号
- c - 如何在 3D 坐标系中绘制线条