Изменить данные с неуникальным идентификатором и различными временными рамками
У меня есть набор данных в следующем формате:
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)