Как преобразовать данные в столбце Дата, используя функцию вырезания в R - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть столбец Дата выпуска в моем наборе данных, и мне нужно добавить столбец Десятилетие, который должен иметь 4 уровня: «1980-е», «1990-е», «2000-е», «2010-е».

1980-е годы в период с 1980-01-01 по 1989-12-31

1990-е годы в период с 1990-01-01 по 1999-12-31 et c.

Образец столбца даты выпуска

enter image description here

Вот мой код:

df$Decade <- cut(df$Release, c(1970,1980,1990,2000))
levels(df$Decade) <- c("1980s", "1990s", "2000s", "2010s")

Вот ошибка, которую я получаю:

Ошибка в cut.Date (df $ Release, 10 + c (1970, 1980, 1990, 2000)): неверная спецификация 'breaks'

Any помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 16 февраля 2020

Для "Date" объектов, вы не можете так резать. Я уверен, что есть базовая версия R, но lubridate может сделать вашу жизнь проще, если вы не слишком заботитесь о том, как или если вы не хотите учиться делать вещи с нуля.

library(lubridate)

Decade <- format(floor_date(Release, years(x=10)), "%Y")
0 голосов
/ 16 февраля 2020

Один из способов - преобразовать Release в дату, извлечь только первые 3 символа года. Итак, 199 за 1991 или 198 за 1987, а затем добавьте "0s", чтобы получить десятилетие.

df <- data.frame(Release = c('5/21/1980', '12/12/1980', '5/12/1991'))
df$Decade <- paste0(substring(as.Date(x, '%m/%d/%Y'), 1, 3), "0s")
df
#     Release Decade
#1  5/21/1980  1980s
#2 12/12/1980  1980s
#3  5/12/1991  1990s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...