How can I order a dataframe by the second column in R?
Possible Duplicate:
How to sort a dataframe by column(s) in R
号
我只是想知道是否有人能帮助我,我有一个我认为应该是一个容易解决的问题。
我有下表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | SampleID Cluster R0132F041p 1 R0132F127 1 R0132F064 1 R0132F068p 1 R0132F015 2 R0132F094 3 R0132F105 1 R0132F013 2 R0132F114 1 R0132F014 2 R0132F039p 3 R0132F137 1 R0132F059 1 R0132F138p 2 R0132F038p 2 |
我想按集群对其进行排序,得到如下结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | SampleID Cluster R0132F041p 1 R0132F127 1 R0132F064 1 R0132F068p 1 R0132F105 1 R0132F114 1 R0132F137 1 R0132F059 1 R0132F015 2 R0132F013 2 R0132F014 2 R0132F138p 2 R0132F038p 2 R0132F094 3 R0132F039p 3 |
号
我尝试了以下R代码:
1 2 3 4 5 | data<-read.table('Table.txt', header=TRUE,row.names=1,sep='\t') data <- data.frame(data) data <- data[order(data$Cluster),] write.table(data, file = 'OrderedTable.txt', append = TRUE,quote=FALSE, sep = '\t', na ='NA', dec = '.', row.names = TRUE, col.names = FALSE) |
并得到以下输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 10 2 11 2 12 2 13 2 14 3 15 3 |
。
为什么样本被数字1-15替换,这些数字代表什么?我已经阅读了
简短的回答是你做得很完美。你读写文件有点困难。查看您的代码:
1 | data<-read.table('Table.txt', header=TRUE,row.names=1,sep='\t') |
号
上面这一行可以读取您的数据,但是
1 | data <- data.frame(data) |
由于
1 | data <- data[order(data$Cluster),] |
。
上面这条线是完美的。
1 2 3 | write.table(data, file = 'OrderedTable.txt', append = TRUE, quote=FALSE, sep = '\t', na ='NA', dec = '.', row.names = TRUE, col.names = FALSE) |
这里包括参数
结果中的数字1-15类似于行号。您没有解释如何查看结果文件,因此我不能确定。您读取文件的方式可能不解析row.name,而是显示行数。如果您确定您的sampleids列没有被指定为行的名称,那么您可能会没事的。
看看
1 2 | arrange(data, Cluster) write.table(data,"ordered_data.txt") |