【问题标题】:New character values based on date range using ifelse使用 ifelse 基于日期范围的新字符值
【发布时间】:2021-01-27 18:33:55
【问题描述】:

我有一些数据的名称我正试图根据特定日期范围重命名。目前我没有结束日期,但将来会有,所以有两个选项会很好。如果ifelse() 将日期强制转换为数字格式,我可以将其转换回日期,除非有更好的方法。我是否只需要先转换为数字并找出与我的日期范围相对应的数字,运行ifelse(),然后在完成后转换回日期?我试图从中获得一些见解,但我不确定它是否对我有用。 Ifelse statement in R with multiple conditions

structure(list(Serial = c("580300", "380201", "380201", "480862", 
"480862", "480862"), Name = c("Gomex", "Clammy", 
"Clammy", "Channel Islands", "Channel Islands", "Channel Islands"
), Date = structure(c(1476928800, 1553619600, 1476932400, 1503777600, 
1476936000, 1604070000), class = c("POSIXct", "POSIXt"), tzone = "")), row.names = c(NA, 
6L), class = "data.frame")

我正在尝试做这样的事情......

vue$Name <- ifelse(vue$Serial == "480862" & Date >= "2019-8-23 10:00:00", "newname", vue$Name)
Error in Date >= "2019-8-23 10:00:00" : 
  comparison (5) is possible only for atomic and list types

【问题讨论】:

  • 我无法重现您的原始错误,但我认为您在尝试中遗漏了一些提取运算符$ 和不一致的列名vue$name &lt;- ifelse(vue$Serial == "480862" &amp; vue$Date &gt;= "2019-08-23 10:00:00", "newname", vue$Name)
  • @EJJ 你是对的,谢谢你捡起这个,我修正了错别字,但同样的错误仍然存​​在。

标签: r date if-statement


【解决方案1】:

我发现了问题vue$Name &lt;- ifelse(vue$Serial == "483689" &amp;&amp; vue$Date &gt;= "2019-8-23 10:00:00", "newname", vue$Name)

我在Date 之前错过了第二个&amp;vue$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多