【发布时间】:2019-07-13 06:17:20
【问题描述】:
我有一个如下的数据框:
df <- data.frame(cbind((c(2018,2018,2018,2018,2018,2017,2017,2016)),
(c('Ohio','Ohio','Arizona','Arizona','Nebraska','Nebraska','New Mexico','Idaho')),
(c('A','B','C','D','E','F','G','H')), (c(1,2,3,4,5,6,7,8))))
colnames(df) <- c('Date', 'Location', 'Var1', 'Var2')
Date Location Var1 Var2
2018 Ohio A 1
2018 Ohio B 2
2018 Arizona C 3
2018 Arizona D 4
2018 Nebraska E 5
2017 Nebraska F 6
2017 New Mexico G 7
2016 Idaho H 8
我正在尝试引入一个新变量“Combo”,它将代表“日期”和“位置”变量的每个唯一组合,这样任何共享相同日期和位置的观察行都将具有相同的 '组合的价值。我希望它看起来像这样:
Date Location Var1 Var2 Combo
2018 Ohio A 1 1
2018 Ohio B 2 1
2018 Arizona C 3 2
2018 Arizona D 4 2
2018 Nebraska E 5 3
2017 Nebraska F 6 4
2017 New Mexico G 7 5
2016 Idaho H 8 6
这样每个组合值都由具有相同日期和位置组合的所有行共享,而与该行中的其他变量无关。
我尝试使用mutate() 和distinct() 的组合,但没有成功。我希望有一个简单的解决方案,有点类似于:
有人对此有任何想法吗?我已经尝试在 distinct() 和 unique() 的文档中查找想法,但没有运气。
非常感谢任何帮助!
【问题讨论】:
-
基本 R 函数
interaction()可能是您想要的,它返回一个您可以强制转换为整数的因子。 -
或者干脆
df %>% mutate(Combo = group_indices(., Date, Location))
标签: r tidyr data-manipulation dplyr