将多个列从 Excel 数字转换为日期格式

问题描述 投票:0回答:1

我下载了一个包含 200 多列的 Excel 文件。有些是字符,有些是数字和其他日期格式。日期列以 Excel 数字格式下载到 R 中,例如“42369”“43380”。

B_1 B_2 B_日期_1 B_日期_2 V_1 V-2 V_3 Z_1 Z_2 Z_3 V_日期_1 V_日期_2 V_日期_3
qsdsq 42369 43380 5.6 7.2 2.3 dsff fdgsfd fdgs 42370 42380 42369
afdf dsqfs 42452 43383 5.1 2.8 3.7 hgfj 阿泽 42370 42380 42369

我找到了

excel_numeric_to_date()

来自库(看门人)的命令,将一个日期列从 Excel 数字转换为日期格式。

df$B_Date_1 <- as.numeric(df$B_Date_1)
df$B_Date_1 <- excel_numeric_to_date(df$B_Date_1)

我想对所有日期列(有很多)重复此命令。我选择了列名称

选择 = c(B_Date_1:B_Date2,V_Date_1:V_Date_2)

并尝试使用 lapply() 或 mutate() 之类的各种方法

df %>% mutate(across(subset(select = c(B_Date_1:B_Date_2,V_Date_1:V_Date_3)),
       as.numeric())) %>% 
       excel_numeric_to_date()

但找不到任何解决方案将所有Excel数字日期列转换为R中的日期格式列。

r date format multiple-columns
1个回答
0
投票

正确的语法是

df %>% 
  mutate(across(c(B_Date_1:B_Date_2,V_Date_1:V_Date_3), excel_numeric_to_date))

返回

   B_1   B_2   B_Date_1   B_Date_2 V_1 V.2 V_3  Z_1    Z_2  Z_3   V_Date_1   V_Date_2
1 NULL qsdsq 2015-12-31 2018-10-07 5.6 7.2 2.3 dsff fdgsfd fdgs 2016-01-01 2016-01-11
2 afdf dsqfs 2016-03-23 2018-10-10 5.1 2.8 3.7 hgfj   azer NULL 2016-01-01 2016-01-11
    V_Date_3
1 2015-12-31
2 2015-12-31

如果您想要所有列中都包含“日期”一词,您也可以这样做

df %>% mutate(across(contains("Date"), excel_numeric_to_date))
© www.soinside.com 2019 - 2024. All rights reserved.