Как удалить часть заголовков столбцов в фрейме данных R - PullRequest
0 голосов
/ 15 января 2019

У меня есть фрейм данных со следующими именами:

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 наборов данных) - как бы вы улучшили это?

1 Ответ

0 голосов
/ 15 января 2019

Опцией будет sub для захвата 'refArea' и удаления всех предыдущих символов.Чтобы удалить «X1996» из «X1996.1997», мы можем использовать substr

colnames(crime)[1] <- sub(".*\\.(refArea)", "\\1", colnames(crime)[1])
v1 <-  colnames(crime)[3:ncol(crime)] 
colnames(crime)[3:ncol(crime)] <- substr(v1, nchar(v1)-3, nchar(v1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...