【发布时间】:2018-10-28 12:56:06
【问题描述】:
end_result_tbl
此 end_result_tbl 是来自不同选民文件的理想格式示例。
ID GEN_16 GEN_14 GEN_08 PP_16 PR_16 PR_15 PR_14
0001 1 1 1 1 0 0 0
0002 0 0 0 0 1 0 1
0003 1 1 1 0 0 0 0
0004 1 0 1 0 0 0 1
0005 1 0 1 1 1 0 1
raw_data_tbl
ID Voter_History
0001 GE 20161108;20121106 GE;20081104 GE;20080205 PP;General Election 2004
0002 2016 GENERAL ELECTION;2014 GENERAL ELECTION
0003 20121106 GE;20081104 GE;General Election 2006
0004 GE 20150910
0005 16 GENERAL ELECTION; 14 PRIMARY ELECTION
希望从每个文本字符串的条件字符串匹配中为每次选举生成变量。
每次选举大约有 9 次迭代。如果一次迭代与选举匹配,则放置“1”以显示该选举中的投票,如果没有匹配,则放置“0”表示不投票。
以下是 2016 年 11 月大选的迭代
GEN_16<-c("20161108 GE",
"16 GENERAL ELECTION",
"GENERAL 2016",
"GENERAL ELECTION 2016",
"2016 GENERAL ELECTION",
"GENERAL ELECTION, 2016",
"16 GENERAL ELECTION",
"GE 20161108")
这是我尝试过的(仅尝试 2016 年大选):
raw_data_tbl$GEN_16<-
as.integer(stri_detect(raw_data_tbl$Voter_History,GEN_16))
which(GEN_16%in%raw_data_tbl$Voter_History
require(dplyr)
Sequences <- GEN_16
Database <- raw_data_tabl$Voter_History
df=as.data.frame(sapply(Sequences, function(x) grep(x,Database)))
stats=df %>% summarise_all(funs(sum))
cbind(Sequences,as.numeric(stats))
这实际上是一个非常简单的虽然 sql 中的超长代码,但在 R 中很难找到它的等价物。
raw_data_tabl 中有大约 1700 万选民。
任何方向都非常感谢,在此先感谢。
【问题讨论】:
标签: r regex pattern-matching dummy-variable