我正在遍历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
所有文件都包含一个标题为“ Time”的列,该列具有日期,但是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
总是返回整个Time
列的NA值,因此我无法通过Time
合并两个数据帧。我认为这不是格式问题,因为我制作了一个单独的脚本,在该脚本中,我手动输入了df2
中的一些日期,并使用了相同的format(strptime())
函数,并获得了成功的返回。因此,我认为,无论出于何种原因,这在循环中均不起作用。谁能解释为什么会这样以及如何解决?将Time
列转换为类字符也无济于事。