【问题标题】:Change row names of a dataframe in R在 R 中更改数据框的行名
【发布时间】:2016-05-05 20:54:54
【问题描述】:

我有一个数据框 df

df<-structure(list(Site_ID = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("day", "id.1.00000", 
"id.10.0000", "id.11.0000", "id.12.0000", "id.13.0000", "id.14.0000", 
"id.15.0000", "id.16.0000", "id.17.0000", "id.18.0000", "id.19.0000", 
"id.2.00000", "id.20.0000", "id.21.0000", "id.22.0000", "id.23.0000", 
"id.24.0000", "id.25.0000", "id.26.0000", "id.27.0000", "id.28.0000", 
"id.29.0000", "id.3.00000", "id.30.0000", "id.31.0000", "id.32.0000", 
"id.33.0000", "id.34.0000", "id.35.0000", "id.36.0000", "id.37.0000", 
"id.38.0000", "id.39.0000", "id.4.00000", "id.40.0000", "id.41.0000", 
"id.42.0000", "id.43.0000", "id.44.0000", "id.45.0000", "id.46.0000", 
"id.47.0000", "id.48.0000", "id.49.0000", "id.5.00000", "id.50.0000", 
"id.51.0000", "id.52.0000", "id.53.0000", "id.54.0000", "id.55.0000", 
"id.56.0000", "id.57.0000", "id.58.0000", "id.59.0000", "id.6.00000", 
"id.60.0000", "id.61.0000", "id.62.0000", "id.63.0000", "id.64.0000", 
"id.65.0000", "id.66.0000", "id.67.0000", "id.68.0000", "id.7.00000", 
"id.8.00000", "id.9.00000", "month"), class = "factor"), Year = structure(c(1L, 
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L), .Label = c("2001", 
"2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", 
"2010", "2011", "2012"), class = "factor"), GPP = c(6.81017, 
6.57111, 7.15914, 7.26641, 6.74574, 7.26397, 6.85568, 7.91268, 
8.03652, 7.399, 7.70301, 6.79211, -0.0446012, -0.0541655, 0.00244928, 
0.013512, 0.0134132, -0.0389873, -0.0376675, -0.0484991, 0.0111558, 
-0.0170514, -0.0243235, -0.0442675, -0.0453214, -0.060819, -0.0090375, 
0.0101045, 0.00918896, -0.0363025)), .Names = c("Site_ID", "Year", 
"GPP"), row.names = c(1L, 69L, 137L, 205L, 273L, 341L, 409L, 
477L, 545L, 613L, 681L, 749L, 2L, 70L, 138L, 206L, 274L, 342L, 
410L, 478L, 546L, 614L, 682L, 750L, 3L, 71L, 139L, 207L, 275L, 
343L), class = "data.frame")

首先,我想重命名Site_ID 列中的每一行名称,如下所示: id.1.00000 到 1 id.10.00000 至 10 id.11.00000 到 11

这是一个示例数据框,因此在我的真实数据框中,我有数百个 ID。

然后,我想根据 ID 重新排序(增加)我的数据框。

有人知道怎么做吗?

【问题讨论】:

  • rename the row name of the Site_ID column ... 行名称适用于所有列。什么意思?
  • 查看更新的问题
  • “ID”是指行名吗?无论如何,普遍的共识是不应使用行名。改为为您的 ID 添加一个明确的列。
  • 好吧,我认为rename each row name from the Site_ID column 在这里非常明确。行名也可以命名为单元格。

标签: r dataframe rename


【解决方案1】:

不确定我是否理解您的问题,但您可以尝试:

df$Site_ID <- as.character(df$Site_ID)
df$Site_ID <- sapply(df$Site_ID, function(id) as.numeric(strsplit(id,"[.]")[[1]][2]))
df <- df[with(df, order(Site_ID)),]

(免责声明:此解决方案不涉及行名)

【讨论】:

    【解决方案2】:

    试试这个:

     df$Site_ID <- as.numeric(gsub(".*\\.(.*)\\..*", "\\1", df$Site_ID))
     df <- df[order(df$Site_ID),]
    

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 2015-12-07
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      相关资源
      最近更新 更多