【问题标题】:Format to find day of week not working in Windows格式化以查找在 Windows 中不起作用的星期几
【发布时间】:2013-09-22 23:10:29
【问题描述】:

我是 R 新手。我在工作中使用 Windows PC,在家里使用 Ubuntu Linux。我试图弄清楚为什么我的代码在 Windows R 中不起作用。 我试图找到给定日期的星期几(数字)。 使用格式format(Sys.time(), "%u")
它适用于Linux而不适用于Windows?我是否遗漏了什么,我从两台 PC 添加了一个简单的代码和会话信息。

我的装有 R 3.01 的 Windows 7 PC 的输出

sessionInfo() 
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    
LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base  

format(Sys.time(), "%u") 
[1] ""   

Sys.time()  
[1] "2013-09-22 10:34:00 CDT"

我使用 R 3.01 的 LINUX PC 的输出

sessionInfo()  
R version 3.0.1 (2013-05-16)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
[3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
[5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
[7] LC_PAPER=C                 LC_NAME=C                 
[9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
loaded via a namespace (and not attached)
[1] tools_3.0.1   

format(Sys.time(),"%u")  
[1] "7"   

Sys.time()  
[1] "2013-09-22 10:34:15 CDT" 

【问题讨论】:

    标签: r datetime format datetime-format


    【解决方案1】:

    这是 R(在 Windows 上)的记录行为。

    有关详细信息,请参阅 ?strptime(我知道,可能不是您可能想到的第一个地方 ;-),它记录了 R 中可用的日期时间转换规范。在 Details 下,一个在所有操作系统上找到的初始规范列表后跟一个部分,内容如下:

    在当前标准中也有定义,但实施较少 (例如,不适用于 Windows 上的输出)是

    ‘%C’世纪(00-99):年份的整数部分除以100。

    [ . . .许多剪断的线条。 . .]

    '%u' 十进制数字形式的工作日(1-7,星期一为 1)。

    [ . . .更多的剪断线。 . .]

    format 中最接近的替代品是:

    %w 工作日为十进制数(0-6,星期日为 0)。

    %a 当前语言环境中的缩写工作日名称。 (也完全匹配 输入名称。)

    %A 当前语言环境中的完整工作日名称。 (也匹配缩写 输入名称。)

    【讨论】:

    • 感谢 Josh、Blue 和 Henrik。我尝试了 %w 和 ISOweekday 两者都有效。
    【解决方案2】:

    您可以查看 ISOweekday() 包中的函数 ISOweek:
    "此函数根据 ISO 8601 返回给定日期的工作日。它是 Windows 上未实现的 "%u" 格式的替代品。"

    ISOweekday("2013-09-24 01:42:23")
    # [1] 2
    

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 2014-10-08
      • 1970-01-01
      • 2022-06-25
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 2021-06-29
      • 2014-07-19
      相关资源
      最近更新 更多