我正在使用一個資料框,該資料框的日期在第一行,如下所示:

但是,當我輸入它們時,這些日期會轉換為數字,如下所示:

我希望這是與上圖格式相同的日期。
> library(readxl)
> Book1 <- read_excel("C:/X/X/X/Book1.xlsx",skip=1)
> View(Book1)
資料框如下:
structure(list(ds = c("ABC", "ABX", "ABZ"), `44866` = c(0, 0,
0), `44896` = c(0, 0, 0), `44927` = c(0, 0, 0), `44958` = c(0,
0, 0), `44986` = c(0, 0, 0), `45017` = c(0, 0, 0)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -3L))
有人可以分享解決這個問題嗎?
uj5u.com熱心網友回復:
一個選項是rename_with在數字列上使用并轉換為 DateTimeopenxlsx::convertToDateTime
library(dplyr)
df1 %>%
rename_with(~ as.character(openxlsx::convertToDateTime(as.numeric(.x))),
-ds)
-輸出
# A tibble: 3 × 7
ds `2022-11-01` `2022-12-01` `2023-01-01` `2023-02-01` `2023-03-01` `2023-04-01`
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ABC 0 0 0 0 0 0
2 ABX 0 0 0 0 0 0
3 ABZ 0 0 0 0 0 0
uj5u.com熱心網友回復:
首先,將列名轉換為數字,然后轉換為日期,最后format像這樣定義您想要的:
df <- structure(list(ds = c("ABC", "ABX", "ABZ"), `44866` = c(0, 0,
0), `44896` = c(0, 0, 0), `44927` = c(0, 0, 0), `44958` = c(0,
0, 0), `44986` = c(0, 0, 0), `45017` = c(0, 0, 0)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -3L))
names(df)[-1] <- format(as.Date(as.numeric(names(df)[-1]), origin = "1899-12-30"), "%Y-%m-%d")
df
#> ds 2022-11-01 2022-12-01 2023-01-01 2023-02-01 2023-03-01 2023-04-01
#> 1 ABC 0 0 0 0 0 0
#> 2 ABX 0 0 0 0 0 0
#> 3 ABZ 0 0 0 0 0 0
使用reprex v2.0.2創建于 2022-11-08
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/529912.html
標籤:r数据框
