【发布时间】:2018-07-24 05:00:12
【问题描述】:
我有一个数据集 (CSV),其中一列包含多种日期格式,可以是
|birth_date|
------------
|DD/MM/YYYY|
|YYYY-MM-DD|
| YYYY |
| [BLANK] |
我正在尝试将“YYYY-MM-DD”格式的日期更改为“DD/MM/YYYY”。到目前为止,我有以下代码:
# Loading in required libraries
library(tidyverse)
source("R/formatDate.R")
# Reading in the Nobel Prize data
data <- read_csv('datasets/data1.csv')
fixed_birthdates <- lapply(data["birth_date"], function(x) formatDate(x))$birth_date
data[["birth_date"]] <- fixed_birthdates
格式日期.R:
formatDate <- function(x) {
output <- x
if (grepl('-', x, fixed = TRUE)) {
xx <- strsplit(x,'-',TRUE)
output <- paste(xx[3],xx[2],xx[1],sep="/")
}
return(output)
}
但是每次我运行它时,fixed_birthdates 的值都等于"c(\"1854\", \"03\", \"15\")/c(\"1839\", \"03\", \"16\")/c(\"1852\", \"08\", \"30\")"。该变量有 5 个元素,而我的原始数据集有 969 个。不知道为什么会这样。
我试图实现的逻辑很简单,但是我不知道如何在 R 中表达它。使用 c# 代码它看起来像这样:
string formatDate (string x)
{
string output = x;
if (x.Contains("-"))
{
string[] xx = x.Split('-');
output = xx[1]+'/'+xx[2]+'/'+xx[3];
}
return output;
}
【问题讨论】: