【问题标题】:Change column Year in R在R中更改列年份
【发布时间】:2015-07-28 19:08:46
【问题描述】:

我有一个 excel 文件,在日期列中,它显示从 2015 年 1 月 1 日到 2015 年 12 月 31 日。我想将所有 15(年)更改为 14,以便所有日期看起来像从 1/1/14 到 12/31/14。如何在 R 中做到这一点?现在我只是使用替换功能手动更改日期。但是还有 150000 多条记录....

【问题讨论】:

  • 您只想更改 2015 年?
  • 它将作为字符串导入,因此只需 gsub 它并在之后转换为日期
  • 如果您不提供可重现的示例、一段代码或所需的输出,则很难为您提供帮助。
  • 正如@rawr 提到的,sub('14$', '15', v1) 是一种方式
  • ...除非你有一个包含Feb 29 的源年份,在这种情况下你可能会得到无意义的日期。 lubridateyears() 更安全。

标签: r date


【解决方案1】:

如果您不想转换为“日期”类并保持相同的格式,一个选项是sub。这里我们匹配最后两个字符 14 并将其替换为 15。

 sub('14$', '15', v1)
 #[1] "1/1/15"   "12/31/15" "1/1/15"  

数据

 v1 <- c('1/1/15', '12/31/15', '1/1/14')

【讨论】:

  • 如何从Feb 29, 2016 中减去一年?
  • @SerbanTanasa 我们没有从 2016 年减去。如果我理解这个问题,它只是用 14 替换 15。
  • @SerbanTanasa 我可以对你的回答说同样的话。 OP 没有指定数据的类型,所以它可能是时间(不太可能),但最有可能是字符串(从我的角度来看更可能)
  • 我只是按照帖子里的话。我知道这并不适用于所有情况。但是,对我来说,将 15 转换为 14 是特定的。
【解决方案2】:

您可以使用 lubridate 减去“x”年。

library(lubridate)

# some random 2015 dates
df <- data.frame(dates = mdy("01/13/2015", "02/25/2015"))

# subtract 1 year
df$dates <- with(df, dates - years(1))
df

       dates
1 2014-01-13
2 2014-02-25

【讨论】:

  • 您也可以使用基数 R 减去它们。我也觉得这里应该有什么条件。
  • 您应该更改命令以匹配用户的输入。 mdy
  • 谢谢!这正是我需要的!
  • @HeidiKaten 很高兴它有效,请接受答案,然后问题就结束了。
猜你喜欢
  • 2021-08-13
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 2011-07-09
  • 1970-01-01
相关资源
最近更新 更多