根据另一个因子列对R数据帧中的因子列进行排序
我在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 &
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