Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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
固定r排序值方法_R_Ggplot2 - Fatal编程技术网

固定r排序值方法

固定r排序值方法,r,ggplot2,R,Ggplot2,我试图用ggplot做一个图表,但R有一个愚蠢的排序方法。它将第一个数字排序为1-9,而不是最大值,因此例如100k小于2。有人能告诉我怎么解决这个问题吗 ggplot(AWD,aes(nationality, discipline, size = money)) + geom_point() + theme(text = element_text(size=25),axis.text.x = element_text(angle=90, hjust=1,

我试图用ggplot做一个图表,但R有一个愚蠢的排序方法。它将第一个数字排序为1-9,而不是最大值,因此例如100k小于2。有人能告诉我怎么解决这个问题吗

    ggplot(AWD,aes(nationality, discipline, size = money)) + 
    geom_point() + 
    theme(text = element_text(size=25),axis.text.x = element_text(angle=90, 
    hjust=1, vjust=0.4))+
    labs(title = "Roznica w wielkosci zarobkow sportowcow roznych dziedzin 
    dla kazdego panstwa", x="Reprezentowane panstwo", y="Rodzaj sportu", 
    fill="Poziom zarobow") 
以下是可复制的示例:

AWD <- data.frame(name = c("Aaron Donald", "Aaron Rodgers", "Albert Pujols", "Alexis SA¡nchez"),
                  nationality = c("Argentyna", "Brazylia", "Chile", "Dominikana"),
                  discipline = c("Baseball", "Boks", "Formula 1", "Futbol amerykanski"),
                  money = c("41,400,000", "89,300,000", "100,000,000", "30,700,000")) 
AWD$money <- as.factor(AWD$money)

AWD观察到的行为的原因是,因子级别被处理为字符串。因此,排序是按字母顺序进行的。这导致“100”按升序位于“99”之前

解决方法有点棘手,我使用了stringr包来简化字符串的操作。剩下的是普通的R。如果您不介意附加的依赖项,那么使用dplyr或类似的包可能会有更优雅的方式

由于我的编辑尚未可见,以下是我用作基线的数据:

    AWD <- data.frame(
                  name = c("Aaron Donald", "Aaron Rodgers", "Albert Pujols", "Alexis SA¡nchez"),
                  nationality = c("Argentyna", "Brazylia", "Chile", "Dominikana"),
                  discipline = c("Baseball", "Boks", "Formula 1", "Futbol amerykanski"),
                  money = c("41,400,000", "89,300,000", "100,000,000", "30,700,000")) 
    AWD$money <- as.factor(AWD$money)

AWD,这是因为变量被视为一个因子。尝试删除
as.factor
,看看这是否解决了问题。这并不愚蠢,只是没有读懂你的心思。你没有做过任何可以让任何东西按计数排序的事情。将大小作为一个因子似乎是一个奇怪的选择。你不想让它成为一个连续变量吗?为了提供更多帮助,我们需要看到一个“我删除了as.factor,但它没有改变”的图表看起来完全一样。我喜欢人们给出不喜欢的东西,但不会告诉你如何解决你的问题ehh有人知道如何帮助我吗?
    newOrder <- order(as.numeric(str_replace_all(levels(AWD$money), ",","")))
    levels(AWD$money) <- levels(AWD$money)[newOrder]