[英]How to import 4-digit year value instead of 2-digit using read.csv
我需要使用read.csv導入日期。 該日期在csv文件中為“ dd-mm-yyyy”格式。 我在下面附加了示例數據。
UniqueId DOB
即使我將日期導入為字符,Read.csv也會將日期轉換為“ dd-mm-yy”格式。 我需要它來導入所有4位數字的年份。
我的代碼和結果是:
x <-read.csv(“ file”,header = TRUE,colClasses = c(“ DOB” =“字符”))
我也嘗試過:
x <-read.csv(“ file”,header = TRUE,stringsAsFactors = FALSE)
兩者的結果:
UniqueId DOB
> class(x$DOB) [1] "character"
當我對此使用as.Date函數時,出現錯誤值:
> as.Date(dob$DOB, format="%d-%m-%y")
[1] "01-04-1984" "24-08-2004" "12-12-2006" "05-08-1970"
我讀為as.Date函數自動將00到68之間的年份轉換為21世紀,而69到99之間的年份則自動轉換為20世紀。
因此,我認為我在read.csv函數本身中犯了一個錯誤。
我還沒有找到在一行中實現所需目標的方法,但是如果您有能力將任務分成兩行,則可以嘗試以下方法:
library(dplyr) # data frame operations
library(lubridate) # tidyverse-compliant package for operations on dates
x <- read.csv("file.csv", header=TRUE, stringsAsFactors=FALSE)
x <- x %>% mutate(DOB = as.Date(DOB, format="%d-%m-%Y"))
x %>% mutate(year = lubridate::year(DOB)) # just to verify that the operations on dates work as expected
# UniqueID DOB year
# 1 1 1984-04-01 1984
# 2 2 1904-08-24 1904
# 3 3 2006-12-12 2006
# 4 4 1870-05-05 1870
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.