数据:
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的新手。感谢任何帮助
答案 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)),]