2016-03-15 2 views
1

У меня есть продольный набор данных, в котором люди поворачиваются на 40 лет в разные годы, и мне нужно провести анализ (сопоставление оценки склонности) с 40-летними. Я хочу создать переменную дохода, которая использовала бы Income 1992 для людей, которым исполнилось сорок в 1998 году, использует для людей, которым исполнилось сорок в 2000 году и так далее.Создание переменных по условной команде в R

Мои данных выглядит следующим образом (и я хочу Incomenew выглядеть следующим образом):

ID | SourceYear| Income1992| Income1994 | Incomenew | 
|---------------|------------|------------|   | 
| 1 | 1998  | 10000  | 12000  | 10000  | 
| 2 | 2000  | 20000  | 15000  | 15000  | 
| 3 | 1998  | 17000  | 16000  | 17000  | 
| 4 | 2000  | 18000  | 20000  | 20000  | 

Я заинтересован в их доходе 6 лет прежде чем они превратятся 40. Я уже настраивал все переменный доход для покупательной способности определенной year.I попытался это:

Incomenew<-NA 
Incomenew[SourceYear=="1998"]<-Income1992[SourceYear=="1998"] 
Incomenew[SourceYear=="2000"]<-Income1994[SourceYear=="2000"] 

я все NAs

Я также попытался это:

`Incomenew<-if (SourceYear=="1998")] {Income1992} 
        else if (SourceYear==2000) 
       {Income1994}` 

Я получаю следующую ошибку

Ошибка в случае (SourceYear == "1998") {: аргумент длины нулевой

Было бы большим подспорьем, если кто-то может помочь с этим я был бы очень признателен.

+0

Необходимо показать воспроизводимый пример. Кроме того, 'Incomenew' имеет длину 1, а SourceYear может иметь разную длину. Попробуйте 'Incomenew <- rep (NA, length (SourceYear))' – akrun

+0

Если 'SourceYear' не будет сохранен как объект, полезный для подмножества вещей (я не могу сказать без данных), скорее всего, он должен иметь префикс набора данных:' Доход1992 [Income1992 $ SourceYear == 1998,] '. Обратите внимание, что вам также нужно поместить запятую после того, как укажете, что вы подмножество лет, и хотите, чтобы все столбцы, и выяснить, являются ли ваши годы строками ('' 1998 ") или номерами (' 2000'). – alistaire

+0

@akrun Большое спасибо за ваш ответ, пытаясь создать воспроизводимый пример, я обнаружил, что эта команда работает; но по моим первоначальным данным это было не поначалу. Тогда я понял, что это потому, что у меня есть NA в SourceYear. Когда я их пропустил, он сработал. Спасибо! –

ответ

1

В моем исходном наборе данных у меня были некоторые NA для SourceYear. Я не понимал, что это важно для этой команды. Первая команда действительно работает, если используется подмножество без NA в SourceYear. Пример:

ID<-c(1,2,3,4,5,6) 
SourceYear<-c("1998", "2000", "1998","2002","2000", "2002", NA) 
Income92<-c(100000,120000,170000,180000, 190000, NA) 
Income94<-c(120000,150000,160000,20000,NA, 120000) 
Income96<-c(130000, 110000,NA, 180000, 190000, 180000) 
incomedata<-data.frame(ID, SourceYear,Income92, Income94, Income96, Incomenew) 
summary(incomedata) 
incomedata1<-subset(incomedata, !is.na(incomedata$SourceYear)) 
incomedata1$Incomenew<-rep(NA, length(incomedata1$SourceYear)) 
incomedata1$Incomenew[incomedata1$SourceYear=="1998"]<- 
incomedata1$Income92[incomedata1$SourceYear=="1998"] 
incomedata1$Incomenew[incomedata1$SourceYear=="2000"]<- 
incomedata1$Income94[incomedata1$SourceYear=="2000"] 
incomedata1$Incomenew[incomedata1$SourceYear=="2002"]<- 
incomedata1$Income96[SourceYear=="2002"] 
Смежные вопросы