根据另一个因子列对R数据帧中的因子列进行排序

根据另一个因子列对R数据帧中的因子列进行排序,r,dataframe,R,Dataframe,我在R中有一个数据帧,如下所示 jj <- c("an","al","ak","cj","bd","bi","bj","bn","bl") jk <- as.factor(c( 1,1,1,0,0,0,2,2,2)) jn <- as.factor(c(2,0,1,1,0,0,3,1,1)) df &

我在R中有一个数据帧,如下所示

jj <- c("an","al","ak","cj","bd","bi","bj","bn","bl")
jk <- as.factor(c( 1,1,1,0,0,0,2,2,2))
jn <- as.factor(c(2,0,1,1,0,0,3,1,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
我尝试使用下面给出的代码对数据帧进行排序


> with(df, df[order(jk, jj, jn),])
  jj jk jn
5 bd  0  0
6 bi  0  0
4 cj  0  1
3 ak  1  1
2 al  1  0
1 an  1  2
7 bj  2  3
9 bl  2  1
8 bn  2  1

上面的代码根据第二列对数据帧进行排序,但我不知道如何按照如上所示的方式对第三列进行排序,就像第三列应该根据级别的每个级别(df$jk)

根据注释和您的预期输出进行排序一样,试试这个。现在还不完全清楚这是你想要的

库(dplyr)
df%>%
变异(jk=sort(jk))%>%
组别(jk)%>%
变异(jn=排序(jn))
#组:jk[3]
jj jk jn
1和0
2铝0 1
3 AK0 2
4 cj 10
5 bd 10
6比1 1
7 bj 2 1
80亿欧元21
9《基本法》第23条
base 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

df$jk_1你能用forcats包中的fct_重新排序吗?我很困惑。在数据帧中,ak、al和an行与
jk=1
,而不是
jk=0
。否则,您将如何对数据进行排序?您是否希望对列进行独立排序,而不是将数据帧作为一个整体进行排序?您好,请尝试此
df[order(df$jk,df$jj,df$jn),]
希望这会有所帮助。@tushallad这不起作用,因为列是因素明白了…谢谢您会认为如果我能提供帮助,请告诉您。。!
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