Цикл для исправления данных на основе имени столбца в R - PullRequest
0 голосов
/ 30 октября 2019

Итак, у меня есть файл с несколькими датами, называющий его Date.1, Date.2 .. Date.168. В середине есть еще одна колонна. Это не последовательность. Итак, я хотел бы исправить дату формата с помощью кода цикла, основанного на имени столбца. Я попробовал это:

for(i in 1:168) {final$Date.[i]=as.Date.numeric(as.numeric(as.character(final$Date.[i])),origin = "1899-12-30")}

Конечно, мой код не считает final$Date.[i] final$Date.1. Есть способ сделать это?

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Просто назначьте несколько столбцов одновременно с paste0 и <-

df[paste0("Date.", 1:168)] <- as.Date.numeric(
                                     as.numeric(
                                           as.character(
                                                 as.matrix(df[paste0("Date.", 1:168)])
                                           )
                                     ), 
                                     origin = "1899-12-30"
                              )
1 голос
/ 30 октября 2019

Вот решение data.table.
Не совсем уверен в этом, поскольку в вопросе отсутствуют примеры данных, но оно должно работать (быстро!).

library( data.table )
#make final a data.table
setDT( final )
#what are the names of columns we want to change?
cols <- paste0( "Date.", 1:168 )
#update the columns the data.table way (by reference)
dt[, (cols) := lapply( .SD, function(x) as.Date.numeric(as.numeric(as.character(x)),origin = "1899-12-30")), .SDcols = cols]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...