У меня есть датафрейм, извлеченный из внешнего источника с метками столбцов, основанными на количестве года и недели. К сожалению, столбцы вытягиваются в странном непоследовательном порядке (особенность внешнего набора данных), и поэтому, когда я сообщаю о них, я хочу извлечь столбцы, используя «select», чтобы получить их в порядке следования по дате.
Я хочу вставить ноль перед однозначными метками столбца ниже - то есть «W1_2019» становится «W01_2019» (и т. Д. Для 2, 3 и до 9), но не перед двойным цифры - то есть "" W10_2019 "останутся как есть. Получившийся столбец должен позволить мне упорядочить имена (df) в порядке возрастания, с W01, за которыми следуют W02 и W03. Без нулей, конечно, порядок W1, затем W10, а затем W2 - это именно то, чего я не хочу.
См. Код ниже.
df<-setNames(
data.frame(
t(data.frame(c("1","2","1","3","2","3", "1")))
,row.names = NULL,stringsAsFactors = FALSE
),
c("W10_2018", "W50_2018", "W51_2018", "W52_2018", "W1_2019", "W2_2019", "W3_2019")
)
names(df) = gsub(pattern="W#_.*", replacement = "W0#_", x=names(df))
sort(names(df))
Строка gsub не возвращает ошибку, но также не меняет имена. В результате получается строка «sort»:
[1] "W1_2019" "W10_2018" "W2_2019" "W3_2019" "W50_2018" "W51_2018" "W52_2018"
Как это должно выглядеть в случае успеха:
[1] "W01_2019" "W02_2019" "W03_2019" "W10_2018" "W50_2018" "W51_2018" "W52_2018"