在循环中迭代时,strtime返回NA值
我正在遍历包含16.csv文件的目录,并使用以下代码将其与另一个文件(df1)进行比较:在循环中迭代时,strtime返回NA值,r,format,strptime,R,Format,Strptime,我正在遍历包含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
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
当我运行代码时,
df2
总是返回整个Time
列的NA值,因此我不能按Time
合并两个数据帧。我不认为这是一个格式问题,因为我制作了一个单独的脚本,手动输入了df2
中的一些日期,并使用了相同的格式(strtime())
函数并成功返回。所以我认为,无论出于什么原因,这在循环中都不起作用。有人能解释为什么会发生这种情况以及如何解决它吗?将Time
列转换为class字符也没有帮助。可能错误在这里,df2所有列的标题都正确!我只是没有包括那部分代码。你是用excel创建输入的.csv文件吗?是的,它们是用excel创建的啊,excel喜欢把.csv中的日期时间弄乱。尝试转到输入文件,将时间列的格式设置为“mm/dd/YYYY HH:mm”,然后保存。保存后,退出excel,并在它再次要求您保存更改时说“否”。基本上,您需要确保excel的输入格式与程序所需的格式相同。
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")