我试图根据第三列排序两列。也许它更像是重新排序。
虚拟数据
df <- as.data.frame(rbind(c('kex','id1A','id3B'),
c('sex','id1B','id1A'),
c('hex','id2A','id3C'),
c('flex','id3A','id1B'),
c('snex','id3B','ID2A'),
c('dex','id3C','id3A')))
第一列中的项目与第二列中的项目相关联。第三列包括与第二列相同的项目,但顺序不同。我想(重新)根据第三列订购第一列和第二列,同时保持其订单完好无损。它基本上是重新排列第二个(和第一个动态)列,所以它(它们)匹配第三个。
输出看起来像这样;
>df
V1 V2 V3
1 snex id3B id3B
2 kex id1A id1A
3 dex id3C id3C
4 sex id1B id1B
5 hex id2A ID2A
6 flex id3A id3A
任何指针都会受到高度赞赏,谢谢!
答案 0 :(得分:4)
尝试使用rank
和cbind
> cbind(df[rank(df$V3), -3], V3=df$V3)
V1 V2 V3
5 snex id3B id3B
1 kex id1A id1A
6 dex id3C id3C
2 sex id1B id1B
3 hex id2A ID2A
4 flex id3A id3A
答案 1 :(得分:-3)
也许
cbind(df[with(df,order(V3)),c(1,2)], df[,3])
V1 V2 df[, 3]
2 sex id1B id3B
4 flex id3A id1A
5 snex id3B id3C
6 dex id3C id1B
1 kex id1A ID2A
3 hex id2A id3A