Назначьте имена столбцов для выбора столбцов набора данных - PullRequest
1 голос
/ 19 марта 2020

Я импортировал , в котором столбцы с # 5 и далее являются датами, которые необходимо очистить, поскольку они имеют форму X1.10.20, и я хотел бы иметь формат YYYY-MM-DD. Я использую gsub() для очистки данных в распознаваемую форму для , а затем конвертирую с mdy()

library(tidyverse)
library(lubridate)

df <- read.csv("df.csv", stringsAsFactors = FALSE)
names(df) <- gsub("X", "", names(df))           #remove leading X
names(df) <- gsub("\\.", "-", names(df))        #convert . to -

Датированные столбцы теперь имеют формат: M-D-YY

dates <- mdy(names(df[,-c(1:4)])) #take current names and assign converted names to `dates` vector

Вектор дат теперь содержит даты в формате YYYY-MM-DD. Я хотел бы взять этот dates вектор и назначить его как имена из столбцов 4:length(df)

Я пробовал следующее:

names(df[,-c(1:4)]) <- dates, однако имена столбцов в оригинале фрейм данных остается без изменений. и имеют формат M-D-YY все еще.

Я чувствую, что, возможно, обдумываю это, и, вероятно, есть более простой способ переименовать определенные c столбцы. Я также пробовал rename() из , но добился успеха только с именами столбцов по отдельности, и этот набор данных имеет сотни столбцов.

Как я могу go об этом? Ценю ваш вклад ...

1 Ответ

1 голос
/ 19 марта 2020

Аргумент names должен быть

library(lubridate)
dates <- as.character(mdy(names(df)[-c(1:4)]))
names(df)[-c(1:4)] <- dates

Этого можно избежать, если использовать check.names = FALSE

df <- read.csv("df.csv", stringsAsFactors = FALSE, check.names = FALSE)
...