【问题标题】:R - how to re-order data frame by row index numberR - 如何按行索引号重新排序数据帧
【发布时间】:2023-03-30 08:35:01
【问题描述】:

这可能是一个非常基本的问题,但我找不到。假设我有一个数据框d,其中行号是这样的:

    Signal
4   9998
3   549
1   18
5   2.342
2   0.043

如何通过增加行索引号来排序以获得以下内容?

    Signal
1   18
2   0.043
3   549
4   9998
5   2.342

【问题讨论】:

    标签: r indexing dataframe numbers row


    【解决方案1】:
    rownames(d) <- 1 : length(rownames(d))
    

    【讨论】:

      【解决方案2】:

      你也可以用这个:

       d[order(as.numeric(rownames(d))),,drop=FALSE]
      

      仅当您的 data.frame 有一列时,drop 才有用,否则将其删除

      【讨论】:

      • 我可以建议使用@Roland 在另一个答案中提出的as.numeric() 吗?
      【解决方案3】:
      d <- read.table(text=readClipboard(), header=TRUE)    
      d$index <- as.numeric(row.names(d))
      d[order(d$index), ]
      

      【讨论】:

      • 由于某种原因,行的顺序最终很奇怪:1 10 100 1000 10000 10001 10002 10003... 10009 1001 10010 10011...
      • 最好使用order。很容易有一个超出范围的行名。另外,行名是字符,所以他们应该首先使用as.numeric
      • 谢谢!它现在正在使用as.numeric(row.names(d)) 和 order()。如果@Paulo Cardoso 编辑了他的解决方案,或者@Roland 发布了答案,我会选择其中一个作为选择的答案。
      • @Roland 我可以添加您的建议还是将其作为答案发布?
      • 我刚刚发现您可以编辑其他人的答案并编辑了 Paulo 的答案;很抱歉造成混乱
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多