Я перебираю каталог из 16 файлов .csv и сравниваю его с другим файлом (df1), используя следующий код:
d1 <- read.csv(file.choose("C:/Me/MyFileLocation))
df1 <- as.data.frame(d1)
# this is where I use strptime for df1
files <- Sys.glob("*.csv")
for (i in files) {
df2 <- as.data.frame(read.csv(i, header = FALSE))
# this is where I use strptime for df2
Все файлы содержат столбец, озаглавленный «Время», в котором есть даты, но df1
и df2
имеют разные форматы даты, поэтому я использовал format(strptime())
, чтобы перевести их в один и тот же (и более сопоставимый) формат.
df1$Time
в формате "5/29/2018 4:20:00 PM"
df2$Time
в формате "5/29/2018 4:20 PM"
.
Это код, который я использовал для их одинакового форматирования:
df1$Time <- format(strptime(df1$Time, "%m/%d/%Y %I:%M:%S %p"), format = "%m/%d/%Y %H:%M")
df2$Time <- format(strptime(df2$Time, "%m/%d/%Y %I:%M %p"), format= "%m/%d/%Y %H:%M")
Когда я запускаю свой код, df2
всегда возвращает значения NA для всего столбца Time
, поэтому я не могу объединить два фрейма данных на Time
. Я не думаю, что это проблема форматирования, потому что я создал отдельный скрипт, где я вручную ввел некоторые даты из df2
, использовал ту же функцию format(strptime())
и получил успешные результаты. Поэтому я думаю, что по какой-то причине это не работает в цикле. Кто-нибудь может объяснить, почему это происходит и как это исправить? Преобразование столбцов Time
в символы класса также не помогло.