【发布时间】:2021-12-09 02:50:09
【问题描述】:
这里是新的 R 用户。我使用 read_xlsx 函数导入 xlxs。我将两列读取为日期,其余列为文本或数字。之后,我无法将“EDD”列从 YYYY-MM-DD 转换为 MM-DD-YYYY。 Str 显示 POSIXct。
MICAP <- read_xlsx("~/Copy of Joint MICAP Report 0700 CDT (004).xlsx",
sheet = "OPEN ORDERS for MICAP Reporting", col_names = TRUE, ,
col_types = c("text", "text", "text", "text", "text", "text",
"text", "text", "text", "text", "date", "numeric", "text",
"date", "text", "text", "text", "text", "text"))
当我调用 str(MICAP) 时,我的列 EDD(日期)显示为 POSIXct,但我无法更改。
我只关心 EDD 更改为 MM/DD/YYYY
【问题讨论】:
-
POSIXt-class 变量在 R 中以一种方式显示,那就是YYYY-MM-DD(通常但不总是HH:MM:SS,基于options("digits.secs"),带/不带小数秒)。如果您希望它以不同的方式显示,您可以 (1) 使用format(vec, format="%m-%s-%Y")转换为字符串;或 (2) 对其进行超类化,并使用 R 的 S3 方法调度来更改它在控制台上的显示方式,并希望您找到所有需要的方法来满足您的所有需求。 -
@r2evans,作为答案发布?
-
@JLGRIECO,另一个想法:如果你想对它做类似数字的事情,把它变成一个字符串可能会有问题(
diff,range,order/arrange等),而这样做的理由往往是关于它如何在最终报告/表格中呈现。如果是这种情况,那么format就是您的答案,由?strptime中的%-strings 提供。但是,如果您真的希望这只是为了在您的控制台上显示,我建议(1)接受 R 的默认值并克服这种差异,或者(2)您需要对 S3 足够熟悉才能理解我所说的“超级-类”。