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