Функция R для создания столбца года - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать функцию, которая помещает столбец года в фрейм данных.

Я могу сделать это без функции, используя:

#Create a dataframe with some dates in it. 
y<-data.frame(Date=(sample(seq(as.Date('2010/01/01'),as.Date('2018/01/01'), by="day"), 20)))      

#create the year column
library(lubridate)
y$Year<-year(y$Date)

Когда я пытаюсь обернуть этовнутри функции ничего не происходит:

#Create a dataframe with some dates
x<-data.frame(Date=(sample(seq(as.Date('2010/01/01'), as.Date('2018/01/01'), by="day"), 20)))

#Create the function
yearfunction<-function(dataframe, datecolumn)
{dataframe$Year<- year(dataframe[,datecolumn])
}

#Call the function
yearfunction(x, "Date")

Я хочу получить те же результаты, что и в первом примере.Может кто-нибудь помочь с тем, как я могу изменить функцию для достижения этой цели?

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете написать yearfunction следующим образом

library(lubridate)

yearfunction<-function(dataframe, datecolumn) {
    year(dataframe[,datecolumn])
}

y$Year <- yearfunction(y, "Date")

y
#         Date Year
#1  2013-09-18 2013
#2  2013-09-26 2013
#3  2012-10-25 2012
#4  2012-05-14 2012
#5  2017-03-01 2017
#6  2016-07-10 2016
#7  2015-02-21 2015
#8  2010-07-28 2010
#9  2013-01-31 2013
#10 2012-01-31 2012
#.....

Или мы также можем использовать transform в функции

yearfunction<-function(dataframe, datecolumn) {
    transform(dataframe, Year = year(dataframe[,datecolumn]))
}

yearfunction(y, "Date")

#         Date year
#1  2013-09-18 2013
#2  2013-09-26 2013
#3  2012-10-25 2012
#4  2012-05-14 2012
#5  2017-03-01 2017
#6  2016-07-10 2016
#...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...