我有一个数据帧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重新排序(增加)我的数据帧。
任何人都知道怎么做?
答案 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),]