我的数据(火车)是一个443402 x 27数据框,我已经将一个新的二进制变量系列$ researchfromplan初始化为“1”。有64,673个唯一列车$ customer_ID(每个客户在数据框中随机输入次数 - 但是按顺序排列。即第一个客户有前9行,第二个客户有下6个,等等。)
> train[1:20,c(1,27)]
> customer_ID researchedplan
1 10000000 1
2 10000000 1
3 10000000 1
4 10000000 1
5 10000000 1
6 10000000 1
7 10000000 1
8 10000000 1
9 10000000 1
10 10000005 1
11 10000005 1
12 10000005 1
13 10000005 1
14 10000005 1
15 10000005 1
24 10000013 1
25 10000013 1
26 10000013 1
27 10000013 1
28 10000014 1
我还有一个向量(diff_than_researched),它包含一些特殊列车$ customer_ID的字符串,用于标识哪些客户未研究特定计划。 对于diff_than_researched中与train $ customer_ID中的字符串匹配的字符串,我想为客户的所有条目训练$ researchfromplan为“0”。 e.g:
> head(diff_than_researched)
>[1] "10000019" "10000033" "10000036" "10000037" "10000055" "10000075"
所以,对于所有“10000019”条目,我想将$ researchfromplan训练为等于“0”。
现在,我可以使用“for循环”完成所有操作,但循环这么多条目需要很长时间:
for(i in 1:17210){ train $研究计划[train $ customer_ID == diff_than_researched [i]]< - 0 }
答案 0 :(得分:0)
使用略有不同的数据以提高可读性并在研究计划中获得0分。
train
## customer_ID
## 1 10000000
## 10 10000005
## 24 10000013
## 28 10000014
## 5 10000019
train$researchedplan <- as.numeric(!train$customer_ID %in% diff_than_researched)
## customer_ID researchedplan
## 1 10000000 1
## 10 10000005 1
## 24 10000013 1
## 28 10000014 1
## 5 10000019 0
如@rawr在评论中所述,首先检查每个customer_ID
是否在diff_than_researched
中,然后否定operator precedence引起的逻辑向量。