2016-09-18 4 views
-5

У меня есть следующий dataframe в R:Манипуляции с dataframe в R

id year count 
1  2013 2 
1  2014 20 
2  2013 6 
2  2014 7 
2  2015 8 
3  2011 13 
... 
999 2016 109 

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

Я хочу, чтобы изменить его в этом формате:

id 2011_count 2012_count 2013_count 2014_count ... 
1  0   0   3   20   ... 
2  0   0   6   7   ... 
... 
999 ...  ...  ... 

Я уверен, что кто-то задал подобный вопрос, но я не знаю, как/что искать.

Спасибо!

+0

также вы не можете применять числа в качестве первого символа в именах столбцов ... –

+0

будет каждый год происходят в исходном наборе данных? что имеет большое значение ... –

ответ

-1

Что-то вроде:

result <- reshape(aggregate(count~id+year, df, FUN=sum), idvar="id", timevar="year", direction="wide") 
result[is.na(result)] <- 0 
names(result) <- gsub("count\\.(.*)", "\\1_count", colnames(result)) 
+0

, что на самом деле не приводит к его желаемому результату ... если каждый год не встречается в исходном наборе данных OP (не говоря уже о NA) –

+0

отредактированный ответ в соответствии с результатом OP – apruden

Смежные вопросы