问题描述
我有一个数据集,我试图处理它的日期格式为数字日-月缩写(即 24-Feb)。我想使用 mutate 和 lubridate 将它们分成两个新列,一个用于日,一个用于月。我在处理数字和缩写的语法方面遇到了问题。下面的代码,我认为是我想要做的不起作用。提前致谢。
import { Component,createRef } from "react";
class GridView extends Component {
constructor(props) {
super(props);
this.state = {
hasScrolled: false
}
this.handleScrollEvent = this.handleScrollEvent.bind(this);
}
handleScrollEvent() {
this.setState({hasScrolled: true})
}
render() {
return <div onScroll={ this.handleScrollEvent } > ... some scrollable content </div>
}
}
解决方法
最好的办法是在您的专栏中paste
正确的年份,例如使用 stringr::str_c
。
data.frame(Date = "24-Feb") %>%
mutate(Date = dmy(stringr::str_c(Date,"2021")))
# Date
# 1 2021-02-24
您可以使用 objects
检查包提供的对象。
objects("package:lubridate",pattern = "dm")
# [1] "dmicroseconds" "dmilliseconds" "dminutes" "dmy"
# [5] "dmy_h" "dmy_hm" "dmy_hms" "ydm"
# [9] "ydm_h" "ydm_hm" "ydm_hms"
,
1. dmy()
与 truncated = 1L
ymd()
函数系列的 lubridate
接受一个 truncated
参数,该参数表明可以省略多少格式。因此,
library(dplyr)
library(lubridate)
df <- tibble(bday = c("24-Feb","25-Apr"))
df %>%
mutate(Date = dmy(bday,truncated = 1L))
# A tibble: 2 x 2
bday Date
<chr> <date>
1 24-Feb 2021-02-24
2 25-Apr 2021-04-25
2. separate()
OP 已请求
我想用 mutate 和 lubridate 把它们分成两个新的 一列表示日,一列表示月。
在 bday
和 Day
列中拆分 Month
可以直接实现,无需创建 Date
列的中间步骤:
library(tidyr)
df %>%
separate(bday,c("Day","Month"),"-",remove = FALSE)
# A tibble: 2 x 3
bday Day Month
<chr> <chr> <chr>
1 24-Feb 24 Feb
2 25-Apr 25 Apr