请考虑这个小数据.框架.我正在试着写一篇基于 SampleDate已格式化为.Date,但新创建的Year列 变成了一个角色,而不是日期.问题是,我如何保留年份列的格式? try 转换为as.Date时出错. 我的代码

a <- structure(list(SampleRowID = c(109, 109, 109, 109, 109, 109), 
               SampleDate = structure(c(15803, 15803, 15803, 15803, 15803, 
                                        15803), class = "Date")), class = "data.frame", row.names = c(NA, 
                                                                                                      -6L))
glimpse(a)
$ SampleRowID <dbl> 109, 109, 109, 109, 109, 109
$ SampleDate  <date> 2013-04-08, 2013-04-08, 2013-04-08, 2013-04-08, 2013-04-08, 2013-04-08
#SampleDate is a date format

#Adding a year column doesn't keep the date format...is a character
a$year <- format(a$SampleDate,"%Y")
 glimpse(a)
 $ SampleRowID <dbl> 109, 109, 109, 109, 109, 109
$ SampleDate  <date> 2013-04-08, 2013-04-08, 2013-04-08, 2013-04-08, 2013-04-08, 2013-04-08
$ year        <chr> "2013", "2013", "2013", "2013", "2013", "2013"

try 将年份转换为as.Date格式时引发错误

A$Year&lt;-as.Date(A$Year) CharToDate(X)中出错: 字符串不是标准的明确格式

推荐答案

在用lubridate::year函数转换正确的格式后,可以用parse_date函数进行转换.

library(tidyverse)
library(lubridate)

a %>% 
  mutate(year = paste0(year(SampleDate),"-01-01") %>% parse_date) %>% 
  glimpse()

Rows: 6
Columns: 3
$ SampleRowID <dbl> 109, 109, 109, 109, 109, 109
$ SampleDate  <date> 2013-04-08, 2013-04-08, 2013-04-08, 2013-04-0…
$ year        <date> 2013-01-01, 2013-01-01, 2013-01-01, 2013-01-…

R相关问答推荐

R:对于没有数据的缓冲区,加权平均值为0

R:如何自动化变量创建过程,其中我需要基于ifelse()为现有变量的每个级别创建一个单独的变量

如何按排序顺序打印一个框架中所有精确的唯一值?

修改用R编写的用户定义函数

使用case_match()和char数组重新编码值

如何动态更新selectizeInput?

根据多个条件增加y轴高度以适应geom_text标签

将包含卷的底部25%的组拆分为2行

使用整齐的计算(curl -curl )和杂音

按多列统计频次

R -如何分配夜间GPS数据(即跨越午夜的数据)相同的开始日期?

R+reprex:在呈现R标记文件时创建可重现的示例

在gggraph中显示来自不同数据帧的单个值

使用R将简单的JSON解析为嵌套框架

有没有办法一次粘贴所有列

按组内中位数分类

如何在AER::ivreg中指定仪器?

R dplyr::带有名称注入(LHS of:=)的函数,稍后在:=的RHS上引用

对一个数据帧中另一个数据帧中的值进行计数

从单个html段落中提取键-值对