r - 如何将单个日期列转换为三个单独的列(y、m、d)?
问题描述
我有一个包含数千个日期ymd
格式的大型数据集。我想转换此列,以便按年、月和日分为三个单独的列。实际上有数千个日期,所以我试图用整个数据集的单个代码来做到这一点。
解决方案
为此,您可以使用lubridateyear()
中的、month()
和day()
提取器。这是一个例子:
library('dplyr')
library('tibble')
library('lubridate')
## create some data
df <- tibble(date = seq(ymd(20190101), ymd(20191231), by = '7 days'))
产生
> df
# A tibble: 53 x 1
date
<date>
1 2019-01-01
2 2019-01-08
3 2019-01-15
4 2019-01-22
5 2019-01-29
6 2019-02-05
7 2019-02-12
8 2019-02-19
9 2019-02-26
10 2019-03-05
# … with 43 more rows
然后mutate
df
使用相关的提取器功能:
df <- mutate(df,
year = year(date),
month = month(date),
day = day(date))
这导致:
> df
# A tibble: 53 x 4
date year month day
<date> <dbl> <dbl> <int>
1 2019-01-01 2019 1 1
2 2019-01-08 2019 1 8
3 2019-01-15 2019 1 15
4 2019-01-22 2019 1 22
5 2019-01-29 2019 1 29
6 2019-02-05 2019 2 5
7 2019-02-12 2019 2 12
8 2019-02-19 2019 2 19
9 2019-02-26 2019 2 26
10 2019-03-05 2019 3 5
# … with 43 more rows
如果您只想要新的三列,请使用transmute()
而不是mutate()
.
推荐阅读
- mysql - Apache 中的 PHPMyAdmin 500 内部服务器错误
- python - 如何将特定字母添加到变量然后使其成为字符串
- laravel - 尝试使用 laravel 8 获取非对象的属性“id”
- php - Laravel 雄辩错误期望参数 1 在尝试使用 sum 时为字符串
- scikit-learn - 绘制决策树未给出预期结果
- html - 出现不需要的左边距
- python - 如何一次创建多个数组
- html - 如何在移动视图中使 Bulma 框元素中的元素全宽
- react-native - useEffect 在没有刷新的情况下无法在自定义抽屉组件中工作
- javascript - 如何在 asp.net 核心中使用 JavaScript 创建倒数计时器?