2014-09-16 1 views
1

Я работаю над проектом для своего класса Data Science. Мой вопрос для проекта: «Американская финансовая удовлетворенность зависит/зависит от годового дохода S & P500 в предыдущем году?» Это наблюдательное исследование. Я разбил информацию из других наборов данных, так что теперь у меня есть 56 000 дел, с переменными на год и финансовой удовлетворенностью. У меня также есть годовая доходность S & P500 в процентном отношении с 1971 по 2013 год.R - Как добавить 22 переменных в 56 000 случаев?

Теперь я должен принять годовой доход 1971 года и применить его ко всем переменным в 1972 году в новом столбце набора данных (spReturns). По сути, доходность всегда будет 1 год. Я новичок в R и не знаю, как это сделать, поэтому я надеялся, что смогу помочь. Мой код ниже, если вам нужно его повторить.

install.packages("lubridate") 
install.packages("zoo") 
install.packages("xts") 
install.packages("Quandl") 

require(Quandl) 
require(lubridate) 
require(zoo) 
require(xts) 

myData <- load(url("http://bit.ly/dasi_gss_data")) 
myData <- myData 

year <- gss$year 
finSat <- gss$satfin 

relativeTable <- data.frame(year, finSat) 
relativeTable <- subset(relativeTable, year > "1988") 


spReturns <- Quandl("SANDP/ANNRETS", trim_start="1970-01-11", 
        trim_end="2012-12-31", authcode="nwy3a_Gmd7TSS9fVirxT", 
        collapse="annual") 

percentChange <- spReturns$"Total Return Change" 

spReturns$"Year Ending" <- format((spReturns$"Year Ending"), "%Y") 
spReturns$"Year Ending" <- as.numeric(spReturns$"Year Ending") 
spReturns$"Year Ending" <- spReturns[,1] + 1 #the following year 
+1

Поскольку вы сказали, что это для домашней работы, я оставлю вам исполнение, но вот некоторые мысли. 1) Я извлечу из отчета Quandl и год, и столбцы «Total Return Change». 2) Я бы подумал об описанной выше арифметике о том, как вы можете скорректировать данные года, и 3) я бы посмотрел на столбец 'merge', чтобы объединить ваши данные. Вместе взятые на основе года или месяца с запаздыванием или что подходит для вашего случая использования. – Chase

+1

, это может быть полезно для извлечения информации о году: http://stackoverflow.com/questions/9749598/r-obiving-month-and-year-from-a-date – Chase

+0

Это для класса coursera, который считается как домашнее задание, не так ли? Мы много узнали о статистической стороне вещей, но не о программировании R, поэтому я очень мало знаю. Это было предложено: spReturns $ lagYear <- формат (индекс (spReturns), "% Y") но возвращается: Ошибка в prettyNum (.Internal (формат (х, наличники, цифры, nsmall, ширина, 3L ,: Недопустимый аргумент «обрезка» –

ответ

0

После добавления +1 к каждому году, чтобы они соответствовали цифре с соответствующей переменной, я применил код ниже. Функция merge() в R создает новый набор данных с использованием двух заданных параметров и организует их «by.x» и «by.y». Как вы можете видеть в этой ситуации, x = год и y = год заканчивается. Вторая строка кода создает еще один набор данных, только используя переменные столбцы, которые важны для моих целей.

combined <- merge(relativeTable, spReturns, by.x = "year", by.y = "Year Ending") 
finalResults <- data.frame(combined$year, combined$finSat, combined$percentChange)