当使用R语言将日期和时间从单个列中分离时,获取NA值



在我的数据集中,我在一列中有日期和时间。以便将其转换为日期和时间格式。我使用了as.POSIXct()

我的代码:

hourlyIntensities$ActivityHour = as.POSIXct(hourlyIntensities$ActivityHour, format = "%m/%d/%y %H:%M:%S", tz = Sys.timezone())

以便将日期和时间拆分到单独的列中。我的代码要分开日期。

hourlyIntensities$ActivityDate = format(hourlyIntensities$ActivityHour, format ="%m%d%y")

在执行代码后,当我检查date列而不是date时,我只能在整个列中看到NA值。

首先我创建了一个小数据集来模拟您的数据集,然后按如下方式修改这个数据集:

library(stringr)  #for splitting dates
library(dplyr)    
library(data.table) # for transforming date and time
library(tibble) #for creating data.frame(optional)
# Creating a vector simulating your dataset
dates <- c("2015-05-01 00:12","2010-05-01 12:12","2012-05-01 18:00","1998-09-05 00:10", "2021-11-01 14:10","1990-01-01 00:12")
dates <- as.POSIXct(dates, "GMT")
#Creating a tibble(dataframe) simulating your dataframe
hourlyIntensities <- tibble(
ActivityHour = dates
)
#Original dataset: 
#-----------------------#
hourlyIntensities
## # A tibble: 6 x 1
##   ActivityHour       
##   <dttm>             
## 1 2015-05-01 00:12:00
## 2 2010-05-01 12:12:00
## 3 2012-05-01 18:00:00
## 4 1998-09-05 00:10:00
## 5 2021-11-01 14:10:00
## 6 1990-01-01 00:12:00

#Creating two variables with seperate Date and Time
hourlyIntensities_new <- hourlyIntensities %>%
mutate(ActivityDate = as.IDate(sapply(hourlyIntensities$ActivityHour, 
function(x) str_split(x, pattern = " ")[[1]][1]))) %>%
mutate(ActivityHour_new = as.ITime(sapply(hourlyIntensities$ActivityHour, 
function(x) str_split(x, pattern = " ")[[1]][2])))

#Modified dataset
#---------------------------------------#
hourlyIntensities_new
## # A tibble: 6 x 3
##   ActivityHour        ActivityDate ActivityHour_new
##   <dttm>              <date>       <ITime>         
## 1 2015-05-01 00:12:00 2015-05-01   00:12:00        
## 2 2010-05-01 12:12:00 2010-05-01   12:12:00        
## 3 2012-05-01 18:00:00 2012-05-01   18:00:00        
## 4 1998-09-05 00:10:00 1998-09-05   00:10:00        
## 5 2021-11-01 14:10:00 2021-11-01   14:10:00        
## 6 1990-01-01 00:12:00 1990-01-01   00:12:00

这就是你的意思吗?

最新更新