在R中排序大数字

时间:2014-04-23 13:53:38

标签: r

数据:

  

m2(样本 - 不是完整数据)

      a           b                   c
4   AGO    114,147  Lower middle income
8   ARM      9,951  Lower middle income
24  BLZ      1,493  Lower middle income
26  BOL     27,035  Lower middle income
30  BTN      1,780  Lower middle income
37  CHN  8,227,103  Lower middle income
38  CIV     24,680  Lower middle income
39  CMR     25,322  Lower middle income
40  COG     13,678  Lower middle income
43  CPV      1,827  Lower middle income

当我使用" order"时,我得到以下内容:

  

平方米[顺序(平方米$ b)中,]

   a           b                   c
50  DJI             Lower middle income
199 TMP      1,293  Lower middle income
24  BLZ      1,493  Lower middle income
30  BTN      1,780  Lower middle income
43  CPV      1,827  Lower middle income
91  IND  1,841,710  Lower middle income
140 MNG     10,271  Lower middle income
151 NIC     10,507  Lower middle income
4   AGO    114,147  Lower middle income
40  COG     13,678  Lower middle income
176 SEN     14,046  Lower middle income
162 PNG     15,654  Lower middle income
71  GEO     15,747  Lower middle income
215 VNM    155,820  Lower middle income
105 KIR        175  Lower middle income
207 UKR    176,309  Lower middle income

当我使用安排时,我得到下面的hte:

  

安排(平方米,递减(平方米$ b))的

    a           b                   c
1  WBG          .. Lower middle income
2  MAR     95,982  Lower middle income
3  ARM      9,951  Lower middle income
4  IDN    878,043  Lower middle income
5  ECU     84,040  Lower middle income
6  CHN  8,227,103  Lower middle income
7  VUT        787  Lower middle income
8  SYR     73,672  Lower middle income
9  MDA      7,253  Lower middle income
10 WSM        684  Lower middle income

问题似乎是它在" b"中排序每个数字(从9开始,如果我排序desc,则从9开始)。 asc / desc顺序列。 我想要" b"的降序。柱。 我是R的新手。感谢任何帮助

2 个答案:

答案 0 :(得分:1)

问题是m2 $ b列目前存储为一个因素。要将因子更改为数字,通常只需要将因子级别转换为数字

as.numeric(levels(m2$b))

但是,由于您有逗号,您需要先使用gsub替换这些

gsub(",","",levels(m2$b))

将它们放在一起产生如下代码:

# First two lines to build example
m2   <-  data.frame(a=1)
m2$b <-  as.factor("114,147"  )
m2$b <-  as.numeric(gsub(",","",levels(m2$b)))
m2

答案 1 :(得分:0)

我怀疑m2是一个矩阵,R中的矩阵只能存储一个类的数据,因此列“b”上的数字可以即时转换为字符串。手动检查m2是什么类:

class(m2)

如果是矩阵,则尝试再次读取数据,但将其加载到data.frame中。您还可以将矩阵转换为data.frame或尝试将所选列转换为数字:

m2[order(as.numeric(m2$b)),]