按R中的列对特定数据帧范围进行排序

时间:2014-07-29 06:27:32

标签: r sorting dataframe range

我有一个大小为8326x13的data.frame。我想按特定栏目分批订购。例如。仅按A列排序范围1:1375。然后,我想将此订单部分添加到相同的data.frame到正确的位置1:1375。有可能吗?

先谢谢。

劳尔。

2 个答案:

答案 0 :(得分:0)

正如@JeremyS

所建议的那样
A <- sample(1:100, 20)
B <- sample(letters[1:26],20)
data <- data.frame(A, B)

n <- 10                                      # you want range 1:n
lower <- data[(n+1):dim(data)[1], ]          # split to two data.frame with lower and upper part
upper <- data[1:n,]  
upper <- upper[order(upper$A),]              # or order(upper[,m]), m is the column index

data.new <- rbind.data.frame(upper, lower)

答案 1 :(得分:0)

或者,(使用useR

的数据集
 indx <- rep(c(TRUE,FALSE), each=10) #create a logical index.  

在这种情况下,前10行是有序的

 data[indx,] <- data[order(data$A[indx]),]

更新

或者不是创建逻辑index,而是提取需要订购的行并将其替换为有序集合

 data[1:10,] <- data[order(data$A[1:10]),]

如果您创建索引,则在数据集中

  indx <- rep(c(TRUE,FALSE), c(1375, 8326-1375))