Arrays 尝试对R中数组的两列进行排序
假设我的数据(Arrays 尝试对R中数组的两列进行排序,arrays,r,sorting,Arrays,R,Sorting,假设我的数据(df)如下所示: Rank Student Points Type 3 Liz 60 Junior 1 Sarah 100 Junior 10 John 40 Senior 2 Robert 70 Freshman 13 Jackie 33 Freshman 11 Stevie
df
)如下所示:
Rank Student Points Type
3 Liz 60 Junior
1 Sarah 100 Junior
10 John 40 Senior
2 Robert 70 Freshman
13 Jackie 33 Freshman
11 Stevie 35 Senior
Rank Student Points Type
1 Sarah 100 Junior
2 Robert 70 Freshman
3 Liz 60 Junior
10 John 40 Senior
11 Stevie 35 Senior
13 Jackie 33 Freshman
我想根据点
对数据进行排序,然后依次按降序和升序排列秩
列,如下所示:
Rank Student Points Type
3 Liz 60 Junior
1 Sarah 100 Junior
10 John 40 Senior
2 Robert 70 Freshman
13 Jackie 33 Freshman
11 Stevie 35 Senior
Rank Student Points Type
1 Sarah 100 Junior
2 Robert 70 Freshman
3 Liz 60 Junior
10 John 40 Senior
11 Stevie 35 Senior
13 Jackie 33 Freshman
所以我这样做了:
df[order(df[, "Points"], df[, "Rank"]), ]
结果是:
Rank Student Points Type
1 Sarah 100 Junior
10 John 40 Senior
11 Stevie 35 Senior
13 Jackie 33 Freshman
2 Robert 70 Freshman
3 Liz 60 Junior
问题:我如何解决这个问题
我尝试使用列标题,因为如果使用物理位置,列的长度/宽度可能会改变,从而影响排序
仅供参考:我尝试了很多建议,但似乎没有一个有效:
,和…试试这个:
df[order(df$Points,decreasing=T,df$Rank),]
Rank Student Points Type
2 1 Sarah 100 Junior
4 2 Robert 70 Freshman
1 3 Liz 60 Junior
3 10 John 40 Senior
6 11 Stevie 35 Senior
5 13 Jackie 33 Freshman
回到基础:)
因此,您的代码应该是:
df就像m0nhawk在评论中指出的那样,您可能将数据作为字符串。字符串的顺序是一次一个 首先需要将它们转换为数字。此外,对于降序,您需要参数
discreating=TRUE
df[, "Rank"] <- as.numeric(df[, "Rank"])
df[, "Points"] <- as.numeric(df[, "Points"])
df[order(df[, "Points"], decreasing = TRUE, df[, "Rank"]), ]
df[,“Rank”]您将Rank
作为字符串,尝试将其转换为数字:df$Rank请将str(df)
的输出添加到您的帖子中。此外,您可能需要尝试dplyr
中的arrange
功能:arrange(df,desc(Points),Rank)
不确定发生了什么,但这个建议也不起作用。我认为我的数据存储方式有问题,df或者,这可能有助于您已经尝试过这个。。。见我文章的结尾。但是谢谢你的建议,所以@nick,在处理问题时,积分前面的“-”没有任何作用Factors@yastro也许可以尝试转换为数字,然后返回到具有唯一级别的因子?首先,我的数据属于“因子”类型,但我真的怀疑数据本身有问题。使用“你的建议”将“分数”部分中的数字分段。。。e、 300分变成30分或者一些奇怪的东西——加上也不会对“排名”列排序。来自地狱的数据?那么,你肯定希望避免将数据作为因素。关于奇怪的格式,如果看不到数据,很难知道发生了什么。按照zx8754的建议,共享str(df)
的输出可能会有所帮助。了解更多关于如何将数据加载到R.Luis、@m0nhawk和@-Shenglin Chen中的信息也会有所帮助。我正在处理一些敏感信息,因此甚至无法发布str(df)。我很高兴离线分享一些片段。我怎样才能ping或IM你?理想情况下,你应该在这里发布一个像你提供的例子,但这是完全代表你的真实数据。当您应用此处建议的解决方案时,它再现了您在实际数据中看到的问题。这篇文章还应该包括你用来生成数据框的代码,它的双重优势是使我们更容易处理它,并确保你的数据的所有属性的可复制性。如果你不能做到这一点,我将很乐意提供一些离线帮助。我必须把它离线,我将能够提供更多的信息。我如何脱机与您联系?