【发布时间】:2017-12-29 14:15:37
【问题描述】:
下面的脚本是一个四列的数据框。我的需要是我想一次取一对值(a1,a2)。 “a3”列是这样的,如果您检查一对(a1,a2),当您跨越数据时,该对的值按升序排列。如果表中存在该对的副本,我希望“a4”列值的排列方式与特定 (a1,a2) 值的相应“a3”列的升序排列一样。假设第一个 (a1,a2) 对 ("A","D"),该对出现三次,对应的 a3 值按升序排列。同样,我希望根据 a4 值的升序排列 a4 值。请检查预期结果。谢谢,请提出建议。
a1 = c("A","B","C","A","B","C","A","C")
a2 = c("D","E","F","D","E","E","D","F")
a3 = c(5,15,12,10,40,35,20,50)
a4 = c(100,160,66,65,130,150,80,49)
a123= data.frame(a1,a2,a3,a4)
library(dplyr)
a123_r <- a123 %>%
group_by(a1, a2) %>%
mutate(a3 = sort(a3)) %>%
ungroup()
a123_r
预期输出
a1 = c("A","B","C","A","B","C","A","C")
a2 = c("D","E","F","D","E","E","D","F")
a3 = c(5,15,12,10,40,35,20,50)
a4 = c(65,130,66,80,160,150,100,49)
a123_r <- data.frame(a1,a2,a3,a4)
【问题讨论】:
-
我知道了,我必须在 a4 列上使用额外的变异,我认为不需要任何进一步的努力,谢谢。
-
@www,我想把a4列按升序排列,为什么要我申请减=真?没有它也可以工作。
-
我的印象是
a4与a3不同,所以你需要一个新问题,但似乎它们遵循相同的规则,所以请忽略我的 cmets。 -
请仔细检查您的预期输出,我相信
a4应该是a4 = c(65,130,49,80,160,150,100,66)。否则C, F的两行就不会排序了?