在R中,是否转换为几列的日期?
你能帮我查一下下面的代码吗? 我确实试图找到一个答案,但可能已经错过了,如果有一个已经对不起你的时间 我有一个数据框架,如下面的示例。我需要做的是将所有的dt_uu变量转换为日期。 我通过mutate()/lappy一个接一个地获得了它,但我正在寻找一种自动方法。我在R工作在R中,是否转换为几列的日期?,r,date,dplyr,data-cleaning,R,Date,Dplyr,Data Cleaning,你能帮我查一下下面的代码吗? 我确实试图找到一个答案,但可能已经错过了,如果有一个已经对不起你的时间 我有一个数据框架,如下面的示例。我需要做的是将所有的dt_uu变量转换为日期。 我通过mutate()/lappy一个接一个地获得了它,但我正在寻找一种自动方法。我在R工作 co_cid Tipo dt_notificacao co_uf_notificac~ co_uf_completo no_municipio_no~ dt_diagnostico_~ <fct> <
co_cid Tipo dt_notificacao co_uf_notificac~ co_uf_completo no_municipio_no~ dt_diagnostico_~
<fct> <fct> <fct> <fct> <fct> <fct> <fct>
1 A90 Deng~ 01/10/2016 PE PERNAMBUCO Recife 23/01/2015
2 A90 Deng~ 02/11/2016 PE PERNAMBUCO Recife 09/01/2015
3 A90 Deng~ 01/11/2016 PE PERNAMBUCO Recife 12/12/2015
4 A90 Deng~ 02/04/2016 PE PERNAMBUCO Recife 12/08/2015
5 A90 Deng~ 01/08/2016 PE PERNAMBUCO Recife 12/01/2015
6 A90 Deng~ 01/11/2016 PE PERNAMBUCO Recife 12/04/2015
co_cid Tipo dt_notificaco co_uf_notificaco~co_uf_completo no_市政_no~dt_diagnostico_~
1 A90邓~2016年10月1日西班牙伯南布哥累西腓2015年1月23日
2 A90邓~2016年11月2日佩尔南布哥累西腓2015年1月9日
3 A90邓~2016年11月1日西班牙伯南布哥累西腓2015年12月12日
4 A90邓~2016年4月2日西班牙伯南布哥累西腓2015年8月12日
5 A90邓~2016年8月1日佩尔南布哥累西腓PE 2015年1月12日
6 A90邓~2016年11月1日西班牙伯南布哥累西腓2015年4月12日
我得到了所有的日期,应该是:
dt_vec <- nomes_colunas[(sapply(nomes_colunas, startsWith,prefix = "dt_"))]
dt_-vec如果我们想转换多个列,请使用mutate
和交叉
library(lubridate)
library(dplyr)#1.0.0
df_dados <- df_dados %>%
mutate(across(starts_with('dt_', dmy)))
您可以使用startsWith
查找要转换的列,并使用lappy
使用as.Date
将它们转换为日期。我们可以使用base R来实现这一点
cols <- startsWith(names(df), 'dt')
df[cols] <- lapply(df[cols], as.Date, "%d/%m/%Y")
df
# co_cid Tipo dt_notificacao co_uf_notificac co_uf_completo no_municipio_no dt_diagnostico_
#1 A90 Deng~ 2016-10-01 PE PERNAMBUCO Recife 2015-01-23
#2 A90 Deng~ 2016-11-02 PE PERNAMBUCO Recife 2015-01-09
#3 A90 Deng~ 2016-11-01 PE PERNAMBUCO Recife 2015-12-12
#4 A90 Deng~ 2016-04-02 PE PERNAMBUCO Recife 2015-08-12
#5 A90 Deng~ 2016-08-01 PE PERNAMBUCO Recife 2015-01-12
#6 A90 Deng~ 2016-11-01 PE PERNAMBUCO Recife 2015-04-12
那太快了!我认为第一个vertion缺少一个“)”,但了解Cross函数真的很好!谢谢大家!df_dados%+变异(跨越(以('dt_'),dmy开头))
@YuriMizusawa抱歉,我没有测试它。谢谢你纠正这一点
df_dados <- df_dados %>%
mutate_at(vars(starts_with('dt_')), dmy)
cols <- startsWith(names(df), 'dt')
df[cols] <- lapply(df[cols], as.Date, "%d/%m/%Y")
df
# co_cid Tipo dt_notificacao co_uf_notificac co_uf_completo no_municipio_no dt_diagnostico_
#1 A90 Deng~ 2016-10-01 PE PERNAMBUCO Recife 2015-01-23
#2 A90 Deng~ 2016-11-02 PE PERNAMBUCO Recife 2015-01-09
#3 A90 Deng~ 2016-11-01 PE PERNAMBUCO Recife 2015-12-12
#4 A90 Deng~ 2016-04-02 PE PERNAMBUCO Recife 2015-08-12
#5 A90 Deng~ 2016-08-01 PE PERNAMBUCO Recife 2015-01-12
#6 A90 Deng~ 2016-11-01 PE PERNAMBUCO Recife 2015-04-12