【发布时间】:2020-07-09 07:56:27
【问题描述】:
我有一个包含n 行和m 列的数据框。每一行都是一个人,每一列都是关于这个人的信息。
df
id age income
1 18 12
2 24 24
3 36 12
4 18 24
. . .
. . .
. . .
我还有一个矩阵rXc每行显示年龄桶,每列显示收入桶,矩阵的每个元素是每个收入年龄桶的人口百分比。
matrix age\income
12 24 36 .....
18 0.15 0.12 0.11 ....
24 0.12 0.6 0.2 ...
36 0.02 0.16 0.16 ...
. ..................
. ..................
对于数据框中的每个人,我需要在给定个人年龄和收入范围的情况下找到矩阵的正确元素。
所需的输出应如下所示
df2
id age income y
1 18 12 0.15
2 24 24 0.6
3 36 12 0.02
4 18 24 0.12
. . .
. . .
. . .
我尝试在循环中使用一系列 IF(如示例中所示):
for (i in 1:length(df$x)) {
workingset <- df[i,]
if(workingset$age==18){
temp<-marix[1,]
workingset$y <- ifelse(workingset$income<12, temp[1], ifelse(workingset$income<24,temp[2],ifelse,temp[3])
}else if(workingset$age==24){
temp<-marix[2,]
workingset$y <- ifelse(workingset$income<12, temp[1], ifelse(workingset$income<24,temp[2],ifelse,temp[3])
}else if{
...
}
if(i==1){
df2 <- workingset
}else{
df2<- rbind(df2, workingset)
}
}
此代码有效,但耗时太长。有没有办法有效地完成这项工作?
【问题讨论】:
-
请展示您的输入数据示例以及基于该数据的所需输出。
-
好的,很抱歉造成混乱