【问题标题】:Converting custom date format imported from excel in R转换从 R 中的 excel 导入的自定义日期格式
【发布时间】:2021-01-03 11:03:25
【问题描述】:

将 Excel 表格导入 R 后,我遇到了一些问题。

当我在 R 中将其导入时,它会将其更改为数值(与我在 Excel 中将单元格类型更改为“通用”的相同)。我用谷歌搜索并尝试了几种方法来解决这个问题,例如以下

但是,我得到的是以下格式的日期:yyyy-mm-dd。 此外,43466:44105 包括这些范围之间的每一天。

  1. 我应该一个一个地输入数字吗? IE。 443466(9 月 19 日)、43497(10 月 19 日)等等。
  2. 如何将其更改为“mm-yy”格式?

最重要的是,一旦我弄清楚如何将这些数字转换为日期,我不确定如何重命名所有日期列。我知道如何重命名多列中的多个元素,但不能将相同的函数(转换)应用于多列(据我所知)。

提前感谢您提供的任何帮助,如果这是一个愚蠢的问题,我们深表歉意,但我是新手,正在尝试新事物。

【问题讨论】:

  • 欢迎来到 SO!请考虑阅读How do I ask a good question。首先,您可以在通过导入 excecl 文件获得的数据框上使用 dput 并将输出粘贴到此处。这样,其他人可以简单地复制和粘贴代码并开始工作。其次,请考虑添加您期望的输出,例如对于前 3 行和列。谢谢!
  • 感谢您的提醒!我刚刚使用了 dput 并且输出很长,您确定可以粘贴所有内容吗?此外,我期望的唯一输出是让日期显示在我的 Excel 表中(即 mm-yy 格式)而不是数值,并使每列下的值显示为百分比。我以为我已经说清楚了?
  • 关于你的第一个问题:是的,没关系。但是,如果您真的认为输出可能太多,您可以轻松限制输出。例如,只需使用dput(df[1:20, ])。关于第二个问题:你认为你说的很清楚。但给出具体的输入输出示例通常可以澄清可能的误解。

标签: r excel dataframe rename


【解决方案1】:

我创建了一些示例数据:

#// sample data
df <- structure(list(region = structure(c(2L, 1L, 3L), .Label = c("london", 
"north east", "west midlands"), class = "factor"), X43466 = c(5, 
4, 5), X43497 = c(6, 7, 8)), class = "data.frame", row.names = c(NA, -3L))
#// check the input
df
#>          region X43466 X43497
#> 1    north east      5      6
#> 2        london      4      7
#> 3 west midlands      5      8

以下是将列名转换为日期格式的方法:

#// get column names
names <- colnames(df)[2:3]
#// remove leading x
names <- sub('.', '', names)
#// convert to numeric
names <- as.numeric(names)
#// convert from Excel date format
names <- as.POSIXct(names * (60*60*24)
           , origin="1899-12-30"
           , tz="GMT")
#// write column names back
colnames(df)[2:3] <- as.character(names)

POSIX 转换的代码可能需要根据您的 Excel 设置和时区进行调整,但您应该能够对其进行整理。结果你应该得到这样的结果:

#// check the results
df
#>          region 2019-01-01 2019-02-01
#> 1    north east          5          6
#> 2        london          4          7
#> 3 west midlands          5          8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2020-11-01
    • 2020-11-23
    • 2021-12-19
    • 2021-04-21
    相关资源
    最近更新 更多