Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 尝试对R中数组的两列进行排序_Arrays_R_Sorting - Fatal编程技术网

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你?理想情况下,你应该在这里发布一个像你提供的例子,但这是完全代表你的真实数据。当您应用此处建议的解决方案时,它再现了您在实际数据中看到的问题。这篇文章还应该包括你用来生成数据框的代码,它的双重优势是使我们更容易处理它,并确保你的数据的所有属性的可复制性。如果你不能做到这一点,我将很乐意提供一些离线帮助。我必须把它离线,我将能够提供更多的信息。我如何脱机与您联系?