将字符列转换为日期列(月份列)[复制]

Convert character column into date column (month column) [duplicate]

提问人:MikiK 提问时间:8/28/2023 最后编辑:PhilMikiK 更新时间:8/28/2023 访问量:36

问:

我有以下数据表,其中列是 -column。我想将其转换为格式。monthcharacterdate

    structure(list(delivYear= c("2018", "2018", "2018", "2018", 
    "2018", "2018", "2018", "2018", "2018", "2018", "2018", "2018", 
    "2018", "2018", "2018", "2018", "2018", "2018", "2018", "2018", 
    "2018", "2018", "2018", "2018", "2018", "2018", "2018", "2018", 
    "2018", "2018", "2018", "2018", "2018", "2018", "2018", "2018", 
    "2018", "2018", "2018", "2018", "2018", "2018", "2018", "2018", 
    "2018", "2018", "2018", "2018", "2018", "2018", "2018", "2018", 
    "2018", "2018", "2018", "2018", "2018", "2018", "2018", "2018"
    ), year = c("2014", "2014", "2014", "2014", "2014", 
    "2014", "2014", "2014", "2014", "2014", "2014", "2014", "2015", 
    "2015", "2015", "2015", "2015", "2015", "2015", "2015", "2015", 
    "2015", "2015", "2015", "2016", "2016", "2016", "2016", "2016", 
    "2016", "2016", "2016", "2016", "2016", "2016", "2016", "2017", 
    "2017", "2017", "2017", "2017", "2017", "2017", "2017", "2017", 
    "2017", "2017", "2017", "2018", "2018", "2018", "2018", "2018", 
    "2018", "2018", "2018", "2018", "2018", "2018", "2018"), q = c("Q1", 
    "Q1", "Q1", "Q2", "Q2", "Q2", "Q3", "Q3", "Q3", "Q4", "Q4", "Q4", 
    "Q1", "Q1", "Q1", "Q2", "Q2", "Q2", "Q3", "Q3", "Q3", "Q4", "Q4", 
    "Q4", "Q1", "Q1", "Q1", "Q2", "Q2", "Q2", "Q3", "Q3", "Q3", "Q4", 
    "Q4", "Q4", "Q1", "Q1", "Q1", "Q2", "Q2", "Q2", "Q3", "Q3", "Q3", 
    "Q4", "Q4", "Q4", "Q1", "Q1", "Q1", "Q2", "Q2", "Q2", "Q3", "Q3", 
    "Q3", "Q4", "Q4", "Q4"), month = c("Jan", "Feb", "Mar", "Apr", 
"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", 
"Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", 
"Nov", "Dec", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", 
"Aug", "Sep", "Oct", "Nov", "Dec", "Jan", "Feb", "Mar", "Apr", 
"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", 
"Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", 
"Nov", "Dec"), nrOrders = c("0", "0", "0", "0", "0", 
    "0", "0", "0", "1", "1", "2", "0", "2", "4", "5", "3", "7", "3", 
    "5", "4", "3", "7", "8", "7", "2", "24", "16", "33", "9", "27", 
    "16", "10", "27", "9", "31", "35", "11", "11", "25", "15", "18", 
    "19", "19", "8", "27", "34", "43", "51", "0", "11", "2", "0", 
    "0", "0", "0", "0", "4", "5", "1", "0"), eur = c("0", "0", "0", 
    "0", "0", "0", "0", "0", "180", "8760", "17760", "0", "6730", 
    "5354", "2840", "22190", "29210", "8725", "7226", "12500", "2090", 
    "13780", "21434", "15719", "29000", "112366", "38148", "125900", 
    "10285", "54281", "23777", "111512", "76907", "18306", "124393", 
    "103220", "8890", "52082", "119095", "28482", "62841", "54356", 
    "54119", "42999", "112459", "169798", "123808", "504226", "0", 
    "55336", "3017", "0", "0", "0", "0", "0", "15880", "1844", "252", 
    "0"), yearMonth = c("2014_Jan", "2014_Feb", "2014_Mrz", 
    "2014_Apr", "2014_Mai", "2014_Jun", "2014_Jul", "2014_Aug", "2014_Sep", 
    "2014_Okt", "2014_Nov", "2014_Dez", "2015_Jan", "2015_Feb", "2015_Mrz", 
    "2015_Apr", "2015_Mai", "2015_Jun", "2015_Jul", "2015_Aug", "2015_Sep", 
    "2015_Okt", "2015_Nov", "2015_Dez", "2016_Jan", "2016_Feb", "2016_Mrz", 
    "2016_Apr", "2016_Mai", "2016_Jun", "2016_Jul", "2016_Aug", "2016_Sep", 
    "2016_Okt", "2016_Nov", "2016_Dez", "2017_Jan", "2017_Feb", "2017_Mrz", 
    "2017_Apr", "2017_Mai", "2017_Jun", "2017_Jul", "2017_Aug", "2017_Sep", 
    "2017_Okt", "2017_Nov", "2017_Dez", "2018_Jan", "2018_Feb", "2018_Mrz", 
    "2018_Apr", "2018_Mai", "2018_Jun", "2018_Jul", "2018_Aug", "2018_Sep", 
    "2018_Okt", "2018_Nov", "2018_Dez")), row.names = c(NA, -60L), class = c("data.table", 
    "data.frame")

我该如何处理这个问题才能将 -column 从字符转换为格式?monthdate

r 日期 日期格式 posixct

评论

0赞 I_O 8/28/2023
如果这些解决方案都不起作用,请添加您尝试过但没有产生所需结果的代码:stackoverflow.com/search?q=%5Br%5D+character+to+date

答:

1赞 NicolasH2 8/28/2023 #1

对于您的具体情况,如果您的 data.frame 存储在 变量 中,您可以这样做:a

b <- paste(a$year,a$month,"01")
b <- as.Date(b, format = "%Y %B %d")
a <- cbind(a, myDate=b)

这对你有用吗?

评论

0赞 MikiK 8/28/2023
问题是:对于 3 月、5 月、10 月和 12 月,我得到 NA(在第 2 步之后)。我认为这是本地设置的问题。此外,我希望具有与列中相同的列输入,但是在使用 时,我想获取日期而不是字符列。monthstr()
0赞 NicolasH2 8/28/2023
如果您使用 yearMonth 列,我会看到这是一个问题,因为那里的月份是德语缩写(例如 Mrz 而不是 Mar),但在您的月份列中并非如此。从未听说过区域设置影响。Date(),但你当然可以尝试用这个替换第 2 行:b <- as.Date(gsub("Mar","Mrz",b), format = "%Y %B %d")
1赞 MikiK 8/28/2023 #2

假设数据表是 ,则执行以下操作:dt

dt$month = factor(dt$month, levels = month.abb)