Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用r合并和提取日期和时间_R_Excel - Fatal编程技术网

使用r合并和提取日期和时间

使用r合并和提取日期和时间,r,excel,R,Excel,我有一个数据集入口和出口的商场,其中包含6列,第一列是日期/时间。在第一行中提到了日期,之后是基于上午和下午的时间输入,然后是日期的变化,时间输入再次出现,这是每天的过程,数据集非常庞大。我的目标是首先将日期和时间按照日期和一个是它是合并需要提取的日期和时间分别在12小时的时钟格式。 数据集如下所示 样本数据集如下所示 12/30/2019 6:27:32 PM Entry - New Access Granted 111111

我有一个数据集入口和出口的商场,其中包含6列,第一列是日期/时间。在第一行中提到了日期,之后是基于上午和下午的时间输入,然后是日期的变化,时间输入再次出现,这是每天的过程,数据集非常庞大。我的目标是首先将日期和时间按照日期和一个是它是合并需要提取的日期和时间分别在12小时的时钟格式。 数据集如下所示 样本数据集如下所示

12/30/2019                  
6:27:32 PM   Entry - New            Access Granted  111111  123456  Deo  
6:27:29 PM   Entry - New            Access Granted  222222  123456  Nijjar
6:26:46 PM   Exit New               Access Granted  333333  1234    Pathak
6:24:58 PM   Entry New              Access Granted  444444  12345   Rakholiya
6:24:39 PM   Exit - New             Access Granted  555555  54321   Rakholiya
6:24:22 PM  ENTRY_NEW               Access Granted  666666  65432   Kumar 
12/29/2019                  
6:27:32 PM   Entry - New            Access Granted  111111  123456  Deo  
6:27:29 PM   Entry - New            Access Granted  222222  123456  Nijjar
6:26:46 PM   Exit New               Access Granted  333333  1234    Pathak
6:24:58 PM   Entry New              Access Granted  444444  12345   Rakholiya
6:24:39 PM   Exit - New             Access Granted  555555  54321   Rakholiya
6:24:22 PM   ENTRY_NEW              Access Granted  666666  65432   Kumar 
我正在使用以下代码

***list_all <- lapply(Tabnames, function(x) read_excel(path=filepath,sheet=x, col_names = F, col_types = c("text", "text" , "text" , "numeric","numeric","text" )))

DF2 <- rbind.fill(list_all) 

DF2$date <- "test"

for (j in 1: nrow(DF2)) 
{
    if (is.na(DF2[j,6]))
    {
        DF2[j,1] -> Date}
else{Date -> DF2$date[j]}
}***

***list_all如果所有问题都要求将日期和时间放在一起,那么下面的代码就可以了。
诀窍是让
作为.Date
不识别向量
数据的时间元素,强制它们为
NA
。并使用此函数将向量拆分为以日期和时间开头的段。然后,只需将第一个元素(日期)与其他元素一起粘贴,并转换为类
POSIXct

tmp <- as.Date(data, "%m/%d/%Y")
sp <- split(data, cumsum(!is.na(tmp)))
tmp <- lapply(sp, function(x){
  x <- trimws(x)
  paste(x[1], x[-1])
})
data <- as.POSIXct(unlist(tmp), format = "%m/%d/%Y %H:%M:%S %p")

rm(sp, tmp)    # final clean up

tmp为什么要用
lappy
读取文件?仅此一点就可以显著增加运行代码所需的时间。为什么不使用
readxl
,它将文件作为TIBLE加载。然后,您可以使用自己的代码或其他软件包(如
lubridate
)来操作日期格式,我尝试过,但问题是我在一个excel文件中有27个工作簿,所以我使用lappy测量它们并创建数据框。我的主要问题是将时间和日期结合在一起。您可以为其推荐代码吗?尝试运行以下代码时,在as.Date.default(DF3,“%m/%d/%Y”)中出现以下错误:不知道如何将“DF3”转换为类“Date”@dkv10请尝试使用
DF3$Date
。您必须注意,我发布的数据示例是一个向量,而不是data.frame。数据集非常庞大,因此我使用data frame,使用DF$日期也会产生相同的错误。如果不查看数据结构,很难说。你能把
dput(head(DF3,20))
的输出放到问题中吗?(是
DF
DF2
还是
DF3
?)
data <-
c("12/30/2019", "6:27:32 PM", "6:27:29 PM", "6:26:46 PM", "6:24:58 PM", 
"6:24:39 PM", "6:24:22 PM", "12/29/2019", "6:27:32 PM", "6:27:29 PM", 
"6:26:46 PM", "6:24:58 PM", "6:24:39 PM", "6:24:22 PM")