将字符日期更改为数字日期,然后在数据框中提取年份

问题描述

我有一个大数据框 (d),其中日期作为字符类。我只想提取年份,但首先,我一直在尝试先转换为日期,然后提取年份。但是我不能从字符更改日期。
所以我有两个问题 - 如何将此字符日期更改为数字日期,然后如何提取年份?
我正在寻找最简单的方法,以便我可以使用其他数据集重新创建。

site<dbl> date<chr> conc<dbl>
2001    2/1/1980    0.006521739     
2001    2/2/1980    0.008260870     
2001    2/3/1980    0.005652174     
2001    2/4/1980    0.007826087     
2001    2/5/1980    0.001000000     
2001    2/7/1980    0.002222222     
2001    2/8/1980    0.008666667     
2001    2/11/1980   0.017777778     
2001    2/12/1980   0.016250000     
2001    2/13/1980   0.015416667 

这是我尝试过的: d2 <- as.Date(d$date,format = "%m/%d/%Y)

我收到此错误消息:

错误:不完整的表达式:d2

解决方法

使用dplyr

library(dplyr)
d <- read.table(text="
site     date       conc
2001    2/1/1980    0.006521739     
2001    2/2/1980    0.008260870     
2001    2/3/1980    0.005652174     
2001    2/4/1980    0.007826087     
2001    2/5/1980    0.001000000     
2001    2/7/1980    0.002222222     
2001    2/8/1980    0.008666667     
2001    2/11/1980   0.017777778     
2001    2/12/1980   0.016250000     
2001    2/13/1980   0.015416667 ",header=T)


d %>% mutate(date = as.Date(date,'%m/%d/%Y'),year = year(as.Date(date,'%m/%d/%Y')))

   site       date        conc year
1  2001 1980-02-01 0.006521739  1980
2  2001 1980-02-02 0.008260870  1980
3  2001 1980-02-03 0.005652174  1980
4  2001 1980-02-04 0.007826087  1980
5  2001 1980-02-05 0.001000000  1980
6  2001 1980-02-07 0.002222222  1980
7  2001 1980-02-08 0.008666667  1980
8  2001 1980-02-11 0.017777778  1980
9  2001 1980-02-12 0.016250000  1980
10 2001 1980-02-13 0.015416667  1980