在R语言中从DD.MM.YYYY格式字符型日期提取年份生成新变量
R语言提取日期变量中的年份解决方案
你的代码存在两处问题:
- 格式字符串错误:原日期格式为
DD.MM.YYYY,但你写的format = "%d.%m,%Y"里,%m与%Y之间误用了逗号,应改为点号,即"%d.%m.%Y" - 仅将字符转成Date类型无法直接得到年份,需要额外提取年份部分
以下是两种可行的解决方法:
方法1:基础R实现
先将字符型日期转换为Date对象,再提取年份:
# 修正格式,转换为Date类型 data2$DatumZalozenia_date <- as.Date(data2$DatumZalozenia, format = "%d.%m.%Y") # 提取字符型YYYY格式的年份 data2$RokZalozenia <- format(data2$DatumZalozenia_date, "%Y") # 若需要数值型年份,可添加转换 data2$RokZalozenia_num <- as.integer(data2$RokZalozenia)
方法2:使用lubridate包(更简洁)
lubridate包对日期处理更直观,步骤如下:
# 首次使用需安装包 install.packages("lubridate") # 加载包 library(lubridate) # dmy()自动识别DD.MM.YYYY格式,直接提取年份 data2$RokZalozenia <- year(dmy(data2$DatumZalozenia)) # 如需字符型年份,转换即可 data2$RokZalozenia_char <- as.character(data2$RokZalozenia)
内容的提问来源于stack exchange,提问作者Alzbeta Ivanovicova
相关产品推荐
相关产品推荐

