如何解决根据另一个因子列对R数据框中的因子列进行排序
我在R中有一个数据框,如下所示
class
我想按以下方式对其进行排序
jj <- c("an","al","ak","cj","bd","bi","bj","bn","bl")
jk <- as.factor(c( 1,1,2,2))
jn <- as.factor(c(2,3,1))
df <- data.frame(jj,jk,jn)
df
jj jk jn
1 an 1 2
2 al 1 0
3 ak 1 1
4 cj 0 1
5 bd 0 0
6 bi 0 0
7 bj 2 3
8 bn 2 1
9 bl 2 1
我尝试了下面给出的代码对数据框进行排序
jj jk jn
1 an 0 0
2 al 0 1
3 ak 0 2
4 cj 1 0
5 bd 1 0
6 bi 1 1
7 bj 2 1
8 bn 2 1
9 bl 2 3
上面的代码根据第二列对数据帧进行排序,但是我没有像上面显示的那样对第三列进行排序,就像第三列应该根据每个级别的 levels(df $ jk)。
解决方法
根据评论和预期输出,尝试此操作。尚不清楚这就是您想要的。
library(dplyr)
df %>%
mutate(jk = sort(jk)) %>%
group_by(jk) %>%
mutate(jn = sort(jn))
# Groups: jk [3]
jj jk jn
<fct> <fct> <fct>
1 an 0 0
2 al 0 1
3 ak 0 2
4 cj 1 0
5 bd 1 0
6 bi 1 1
7 bj 2 1
8 bn 2 1
9 bl 2 3
,
基本R
df$jk_1 <- sort(df$jk)
df$jn_1 <- ave(df$jn,df$jk,FUN = sort)
jj jk jn jk_1 jn_1
1 an 1 2 0 0
2 al 1 0 0 1
3 ak 1 1 0 2
4 cj 0 1 1 0
5 bd 0 0 1 0
6 bi 0 0 1 1
7 bj 2 3 2 1
8 bn 2 1 2 1
9 bl 2 1 2 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。