在 R 中通过条件命令创建变量
Creating variables by conditional command in R
我有一个纵向数据集,其中人们在不同年份年满 40 岁,我需要对 40 岁的人进行分析(倾向得分匹配)。我想创建一个收入变量,对 1998 年年满 40 岁的人使用 Income 1992
,对 2000 年年满 40 岁的人使用 Income 1994
,依此类推。
我的数据看起来像这样(我希望 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 |
我对他们 40 岁前 6 年的收入很感兴趣。我已经针对某个人的购买力调整了所有收入变量 year.I 试过这个:
Incomenew<-NA
Incomenew[SourceYear=="1998"]<-Income1992[SourceYear=="1998"]
Incomenew[SourceYear=="2000"]<-Income1994[SourceYear=="2000"]
我得到所有的 NA
我也试过这个:
`Incomenew<-if (SourceYear=="1998")] {Income1992}
else if (SourceYear==2000)
{Income1994}`
我收到以下错误
Error in if (SourceYear== "1998") { : argument is of length zero
如果有人能帮上忙,我将不胜感激。
在我的原始数据集中,我有一些 SourceYear 的 NA。我没有意识到这对这个命令很重要。
如果使用 SourceYear 中没有 NA 的子集,则第一个命令实际上有效。一个例子是:
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"]
我有一个纵向数据集,其中人们在不同年份年满 40 岁,我需要对 40 岁的人进行分析(倾向得分匹配)。我想创建一个收入变量,对 1998 年年满 40 岁的人使用 Income 1992
,对 2000 年年满 40 岁的人使用 Income 1994
,依此类推。
我的数据看起来像这样(我希望 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 |
我对他们 40 岁前 6 年的收入很感兴趣。我已经针对某个人的购买力调整了所有收入变量 year.I 试过这个:
Incomenew<-NA
Incomenew[SourceYear=="1998"]<-Income1992[SourceYear=="1998"]
Incomenew[SourceYear=="2000"]<-Income1994[SourceYear=="2000"]
我得到所有的 NA
我也试过这个:
`Incomenew<-if (SourceYear=="1998")] {Income1992}
else if (SourceYear==2000)
{Income1994}`
我收到以下错误
Error in if (SourceYear== "1998") { : argument is of length zero
如果有人能帮上忙,我将不胜感激。
在我的原始数据集中,我有一些 SourceYear 的 NA。我没有意识到这对这个命令很重要。 如果使用 SourceYear 中没有 NA 的子集,则第一个命令实际上有效。一个例子是:
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"]