strptime возвращает значения NA при повторении цикла - PullRequest
0 голосов
/ 27 июня 2018

Я перебираю каталог из 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 в символы класса также не помогло.

...