我下载了一个包含 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中的日期格式列。
正确的语法是
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))