更改R中数据框的行名称

时间:2016-01-28 13:00:20

标签: r dataframe rename

我有一个数据帧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重新排序(增加)我的数据帧。

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:0)

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

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)),]

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

答案 1 :(得分:-1)

试试这个:

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