Подтвердить что ты не робот

Извлечь год с даты

Как удалить первые элементы из переменной, особенно если эта переменная имеет специальные символы. Например, у меня есть следующий столбец:

Date
01/01/2009
01/01/2010
01/01/2011
01/01/2012

Мне нужно, чтобы новый столбец был следующим:

Date
2009
2010
2011
2012
4b9b3361

Ответ 1

если все ваши даты имеют одинаковую ширину, вы можете поместить даты в вектор и использовать подстроку

Date
a <- c("01/01/2009", "01/01/2010" , "01/01/2011")
substring(a,7,10) #This takes string and only keeps the characters beginning in position 7 to position 10

Выход

[1] "2009" "2010" "2011"

Ответ 2

Как обсуждалось в комментариях, это может быть достигнуто путем преобразования записи в формат Date и извлечения года, например:

format(as.Date(df1$Date, format="%d/%m/%Y"),"%Y")

Ответ 4

Когда вы конвертируете свою переменную в Date:

date <-  as.Date('10/30/2018','%m/%d/%Y')

затем вы можете вырезать нужные элементы и создать новые переменные, например, год:

year <- as.numeric(format(date,'%Y'))

или месяц:

month <- as.numeric(format(date,'%m'))

Ответ 5

Вы можете извлечь год из объекта даты, используя функцию года из пакета lubridate.

library(lubridate)

year("2016-12-08")

Ответ 6

Это скорее совет, чем конкретный ответ, но я предлагаю немедленно преобразовать даты в переменные даты, а не сохранять их в виде строк. Таким образом, вы можете использовать на них функции даты (и времени) вместо того, чтобы пытаться использовать очень трудоемкие обходные пути.

Как уже указывалось, пакет lubridate обладает хорошими функциями извлечения.

Для некоторых проектов я обнаружил, что начальное разбиение дат полезно с начала: создайте переменные year, month, day (of month) и day (of week) для начала. Это может упростить сводки, таблицы и графики, потому что код извлечения отделен от кода сводки/таблицы/графика, и потому, что если вам нужно его изменить, вам не нужно развертывать эти изменения в нескольких местах.

Ответ 7

Если вы используете пакет date, это можно сделать довольно легко.

library(date)
Date <- c("01/01/2009", "01/01/2010", "01/01/2011", "01/01/2012")
Date <- as.date(Date)
Date
# [1] 1Jan2009 1Jan2010 1Jan2011 1Jan2012
date.mdy(Date)$year
# [1] 2009 2010 2011 2012

## be aware that these are now integers and thus different methods may be invoked:
str(date.mdy(Date)$year)
# int [1:4] 2009 2010 2011 2012
summary(Date)
#     First      Last   
# "1Jan2009" "1Jan2012" 
summary(date.mdy(Date)$year)
#    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#    2009    2010    2010    2010    2011    2012 

Ответ 8

Но что, если у меня много лет? Как мне включить все годы?

Ответ 9

Сначала преобразуйте это в формат даты, используя

library(lubridate)

date<-c("01/01/2009","01/01/2010", "01/01/2011"," 01/01/2012")

year(as.Date(date,"%d/%m/%Y")) #it will give you only years

Надеюсь, это поможет вам! :)