在R中排序行

时间:2014-05-15 19:18:32

标签: r

我有一个关于在R中订购数据的问题:

data<-letters
data<-sample(data)
order<-c(1:26)
data<-as.data.frame(cbind(data,order))
data<-arrange(data,order)

data$order

[1] 1  10 11 12 13 14 15 16 17 18 19 2  20 21 22 23 24 25 26 3  4  5  6  7  8  9 

如何将订单改为1,2,3,4,5呢?

4 个答案:

答案 0 :(得分:4)

as.data.frame(cbind())的怪物再次袭来。有一个用于创建数据帧的功能。它被称为data.frame()。用它! ;)

data<-data.frame(data = data,order = order)
data<-arrange(data,order)

cbind带有数字向量的因子(或字符)时,如?cbind中所述,您将获得一个矩阵,因此可能会产生许多不必要的强制。

答案 1 :(得分:3)

不要使用as.data.frame(cbind(数据,订单))#只需使用data.frameas.data.frame

请丢掉任何教你的教程。这是令人厌恶的!

答案 2 :(得分:0)

当你cbind元素时,它们必须是所有相同的类型,当你在as.data.frame命令中组合这些字符和数值时,你强制一切都是字符,然后当你创建数据时。框架将它们转换为因子。这些是默认排序的词典。如果你希望他们对数字进行排序,我建议你把它们保存为数字。所以

data<-data.frame(data,order)

是一个更好的选择。或者,您可以将标签的字符值转换为数字并排序

data<-arrange(data,as.numeric(as.character(order)))

但那是很多不必要的工作。

答案 3 :(得分:0)

sort(data)应该做得很好。查看?sort,因为有一个参数可以选择升序或降序。