根据R中另一列的顺序对列进行排序

时间:2017-12-30 19:09:34

标签: r dplyr mutate

下面的R脚本创建一个包含三列的数据框a123。列a1有三个变量出现在不同的地方,具有相应的a2和a3值。

a1 = c("A", "B", "C", "A", "B", "B", "A", "C", "A", "C", "B")
a2 = c( 10, 8, 11 , 6 , 4 , 7 , 9 , 1 , 3 , 2, 7)
a3 = c( 55, 34, 33, 23, 78, 33, 123, 34, 85, 76, 74)
a123 = data.frame(a1, a2, a3)

我的需要是我希望对应于a1列值的a3列值基于a2值的顺序以升序排列。此外,如果遇到常见的a2值,则相应的a3列值应按升序排列。例如,说值" A"在列a1中,a2和a3中包含以下值,

a2 = c(10, 6, 9, 3)
a3 = c(55, 23, 123, 85)

值可以是:

a3 = c(123, 23, 85, 55)

预期结果:

a1 = c("A", "B", "C", "A", "B", "B", "A", "C", "A", "C", "B")
a2 = c( 10, 8, 11, 6, 4, 7, 9, 1, 3, 2, 7)
a3 = c( 123, 78, 76, 23, 33, 34, 85, 33, 55, 34, 74)
a123 = data.frame(a1, a2, a3)

谢谢,请帮助。 注意:请尽量避免循环和条件,因为它们可能会减慢基于大数据的计算速度。

1 个答案:

答案 0 :(得分:1)

使用dplyrsortrank的解决方案。我不完全理解你的逻辑,但这可能是你正在寻找的东西。请注意,我假设组a3的{​​{1}}中的元素为A

123, 55, 85, 23