【发布时间】:2021-09-22 06:36:19
【问题描述】:
当我试图分析来自 kaggle 的数据集时,我遇到了一些转换问题。我想从“2022 年 4 月 31 日 8:26”检索 ISO 日期 à la “2022-04-31”。
我的第一个想法是通过循环和 if 逻辑的经典编程方法 - 负担不起。这里的问题是缺少前导零。
第二种方法是通过 str_split 将列字符串值分开,然后再次将其转换在一起:
################################################################################
# START OF SCRIPT
################################################################################
suppressPackageStartupMessages(library(tidyverse))
suppressPackageStartupMessages(library(lubridate))
################################################################################
# ETL
################################################################################
#---->> https://www.kaggle.com/carrie1/ecommerce-data
raw_data <- read.csv("data 2.csv", sep = ",")
clean_data <- raw_data %>% drop_na()
clean_data <- clean_data[!duplicated(clean_data[,1:8]),]
#
## date conversion
#
split <- str_split(clean_data$InvoiceDate, "/") %>% plyr::ldply(,data.frame)
colnames(split) <- c("month", "day", "year")
split$year <- substr(split$year, 1,4)
######
filled_day = as.Date(split$day, format = "%d")
str_day <- substr(filled_day, 9,10)
对于 day 列,它似乎是这样工作的,但我无法使用 base 和 lubridate 重新转换月份。也许我的方法要么太复杂,要么太简单。请与我分享您的想法
【问题讨论】:
标签: r date format data-science