Изменить данные с неуникальным идентификатором и различными временными рамками

У меня есть набор данных в следующем формате:

name1 year name2 profits2010 profits2009 count 
AA    2009  AA    10           15          20
AA    2010  AA    10           15          3
BB    2009  BB     4           NA          34
BB    2010  BB     4           NA          4

Мне нужно изменить данные в этот формат. Есть идеи, как это можно сделать?

name1 year name2 profits count
AA    2009 AA     15       20
AA    2010 AA     10       3
BB    2009 BB     NA       34
BB    2010 BB     4      4

2 ответа

Решение

Пытаться

 indx <- grep('profits', names(df1))
 indx2 <- cbind(1:nrow(df1), match(df1$year, 
               as.numeric(sub('\\D+', '',   names(df1)[indx]))))
 df1$profits <- df1[indx][indx2]
 df1[-indx]
 #   name1 year name2 count profits
 #1    AA 2009    AA    20      15
 #2    AA 2010    AA     3      10
 #3    BB 2009    BB    34      NA
 #4    BB 2010    BB     4       4

На самом деле это не изменение формы, просто определение новой переменной. Попробуй это:

df$profits <- ifelse(df$year==2009,df$profits2009,df$profits2010)
Другие вопросы по тегам