【问题标题】:Convert column of ints to year将整数列转换为年份
【发布时间】:2018-03-26 01:03:06
【问题描述】:

我是 R 新手,所以请不要讨厌。我想将下面的整数列转换为年份列

转换这个: Date: int 189507 189508 189509 ...

对此: Year: int 1895 1895 1895

代码

library(tidyverse)
library(lubridate)

df <- read_csv("noaa-central-park.csv")
year <- df$Date 
df <- transform(df, year = as.Date(as.character(year), "%Y"))
tempByYears <- group_by(df, year)

问题:我仍然得到如下所示的年月日格式。如何解决?

来源:Stackoverflow questionsgroup_by() video

【问题讨论】:

  • R 中的Date 是年月日。如果您只指定一年,您将获得该年的今天日期 - 请注意每一行中的 03-25。你可以子字符串 - substr(df$Date,1,4) 吗?
  • 在 pkg:zoo 中定义了一个 yearmon 类。我猜想了解这个非常有价值的软件包提供的其他功能可能对长时间序列的研究有用。
  • transform(df,year=year(as.Date(as.character(year),"%Y")))

标签: r


【解决方案1】:

我假设Date 中的值是年+月,格式为%Y%m。在这种情况下,最好不要像整数一样将其读入 R。例如,您可以指定 Date 为字符。

我使用df1 作为数据框变量名,因为df 可能会导致与同名函数混淆。

df1 <- read_csv("noaa-central-park.csv", 
    col_types = cols(Date = col_character()))

现在假设每个Date 都以 4 位数年份开头,获取year 的最简单方法是提取前 4 个字符并转换为数字:

df1 <- df1 %>%
  mutate(year = as.numeric(substring(Date, 1, 4))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-04
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 2019-07-19
    相关资源
    最近更新 更多