我有以下面板数据集:
group i f r d
1 4 8 3 3
1 9 4 5 1
1 2 2 2 2
2 5 5 3 2
2 3 9 3 3
2 9 1 3 1
我想根据每个组的d列中的值对该数据框中的i列重新排序。因此,第i列中第1组的最大值应对应于d列中的最大值。最后,我的data.frame应该看起来像这样:
group i f r d
1 9 8 3 3
1 2 4 5 1
1 4 2 2 2
2 5 5 3 2
2 9 9 3 3
2 3 1 3 1
您可以使用dplyr
和实现此目的rank
:
library(dplyr)
df1 %>% group_by(group) %>%
mutate(i = i[rev(rank(d))])
这个问题实际上比最初看起来要棘手,我发布的原始答案不正确。正确的解法由的i
子集排序之前由排序d
。这给出了OP所需的输出,而我以前的答案没有(不引起注意!)
df1 %>% group_by(group) %>%
mutate(i = i[order(i)][rank(d)])
# A tibble: 6 x 5
# Groups: group [2]
# group i f r d
# <int> <int> <int> <int> <int>
#1 1 9 8 3 3
#2 1 2 4 5 1
#3 1 4 2 2 2
#4 2 5 5 3 2
#5 2 9 9 3 3
#6 2 3 1 3 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句