在数据框上使用order()的意外结果

时间:2014-06-18 11:40:54

标签: r

这是我第一次在这里提问,所以请耐心等待。

我在使用order()

时遇到问题

这是data frame。它有294个观测值和46个变量。

这是我正在使用的代码

i <- order(data[ , 17], data[ , 2], decreasing = FALSE)

rdata <-data[i, ]

为了便于阅读,我删除了除了我订购的两个变量之外的所有变量。以下是results

我想要的是第17列从最小到最大排序,如果第17列中的两个或更多值相同,那么第2列按字母顺序排序。

由于某种原因,结果并不完全正确。也许,我有太多的观察或其他东西,但不是column 17 (1:294)排序的所有内容,而是由column 17 (251:294, 1:250)订购的

抱歉,我还能如何分享数据?

基本上,行251 to 294应该“预先”到结果数据框的开头

感谢您的帮助

i <- order(as.numeric(data[ , 17]), data[ , 2], decreasing = FALSE)

rdata <-data[i, ]

现在可以正常使用。

1 个答案:

答案 0 :(得分:0)

如果我找对你,那么你应该做的就是 -

i     <- data [order(data [,17],data [,2]),]
rdata <- subset(i, select=c(i[,17],i[,2]))

或者您可以使用plyr包并说 -

i     <- arrange(data,data[,17],data[,2])
rdata <- subset(i, select=c(i[,17],i[,2]))