У меня есть фрейм данных со следующими именами:
R > colnames(crime)
[1] "http...purl.org.linked.data.sdmx.2009.dimension.refArea"
[2] "Reference.Area"
[3] "X1996.1997"
[4] "X1997.1998"
[5] "X1998.1999"
[6] "X1999.2000"
[7] "X2000.2001"
[8] "X2001.2002"
[9] "X2002.2003"
[10] "X2003.2004"
[11] "X2004.2005"
[12] "X2005.2006"
[13] "X2006.2007"
[14] "X2007.2008"
[15] "X2008.2009"
[16] "X2009.2010"
[17] "X2010.2011"
[18] "X2011.2012"
[19] "X2012.2013"
[20] "X2013.2014"
[21] "X2014.2015"
[22] "X2015.2016"
[23] "X2016.2017"
[24] "X2017.2018"
и у меня также есть следующий столбец:
R > crime[,1]
[1] http://statistics.gov.scot/id/statistical-geography/S12000033
[2] http://statistics.gov.scot/id/statistical-geography/S12000034
[3] http://statistics.gov.scot/id/statistical-geography/S12000041
[4] http://statistics.gov.scot/id/statistical-geography/S12000035
[5] http://statistics.gov.scot/id/statistical-geography/S12000036
[6] http://statistics.gov.scot/id/statistical-geography/S12000005
[7] http://statistics.gov.scot/id/statistical-geography/S12000006
Мне бы хотелось, чтобы имя первого столбца было «refArea», а столбцы с годами - последними 4 числами, то есть «X1996.1997» будет «1997». Я также хотел бы, чтобы в первом столбце были только последние 9 символов (например, S12000006 - коды разные, а некоторые - S02 ... или S01 ...)
Мой текущий код выглядит следующим образом:
R > colnames(crime)[colnames(crime) == "http...purl.org.linked.data.sdmx.2009.dimension.refArea"] <- "refArea" #replace url with "refArea"
crime$refArea <- substr(crime$refArea, 53, 61) #substring only characters 53-61 from column refArea
colnames(crime) <- c("refArea", "Reference.Area", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018") #Manually change column names
Но это кажется очень неуклюжим и плохо закодированным (и я должен повторить эту процедуру для еще 8 или 9 наборов данных) - как бы вы улучшили это?