操纵日期格式

Manipulate date format

合并数据集时,有多种日期格式无法加入这些数据集。

我需要以年为单位的日期值,例如 2004、2005、1996、1987。

但它们有不同的格式 int,I_chr,dbl.

我用了各种方法操作都失败了。有谁知道如何解决这个问题?

数据样本1为

glimpse(ARTD_data_reshaped)
Rows: 9,606
Columns: 12

$ country         chr "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afg~
$ year            I chr 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1~
$ combined_regime chr "Monarchy", "Monarchy", "Monarchy", "Monarchy", "Monarchy", "Mon~
$ kailitz_tri     int 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0~

数据样本2为

glimpse(FH_data_2_reshaped_new)
Rows: 621
Columns: 3

$ country   chr "Abkhazia", "Abkhazia", "Abkhazia", "Afghanistan", "Afghanistan", "Afg~
$ year      int 2003, 2004, 2005, 2003, 2004, 2005, 2003, 2004, 2005, 2003, 2004, 2005~
$ pr_rating chr "9", "9", "9", "8", "9", "13", "26", "26", "26", "11", "11", "10", "39~

1.方法一

FH_data_2_reshaped_new <- read.csv(file = "FH_data_2_reshaped.csv") %>% 
select(country, year, pr_rating) %>%
as.POSIXct(year)

Error in as.POSIXct.default(., year) : 不知如何將 '.' 轉換成 “POSIXct” 類別

2。方法二

FH_data_2_reshaped_new <- read.csv(file = "FH_data_2_reshaped.csv") %>% 
select(country, year, pr_rating) %>%
mutate(year = lubridate::year(year))

Error: Problem with mutate() column year. i year = lubridate::year(year). x 'origin' 一定得給值

有多种方法可以做到这一点。最好的方法之一是使用基础 R.

中的 as.Date

注:假设数据框的名字是df.

代码将如下所示:

df$year <- as.Date(df$year, format = "%Y")

这会将年份列从数据框中转换为 class date。虽然它会将当前日期和月份附加到年份。即年份值看起来将转换为 yyyy-mm-dd 格式,其中 mmdd 是当前月份和日期。

如果您不需要月份和日期部分,您可以使用 lubridate 库。

library(lubridate)
df$year <- as.Date(as.character(df$year), format = "%Y")
df$year <- year(df$year)

它会给你唯一的年份部分。但是,请记住它将是 class numeric 而不是 Date.