【发布时间】:2019-12-24 14:15:49
【问题描述】:
我想运行一个循环来读取数据帧 (data_rais) 中的值,但我意识到这可能需要几天时间,我认为这是因为我正在运行一个循环,而不是一个函数。 我多次尝试编写一个与此循环相同的函数,但我找不到这样做的方法。 我的问题是:是否可以在函数中转换此循环?怎么样?
for(i in 1:nrow(data_rais)){
if(is.na(data_rais$postal_code[i])){
next()
} else {
data_rais$munic_name[i] = munics_code[row(munics_code)[which(munics_code$cods == data_rais$munic[i])], 1]
}
}
munics_code 看起来像这样:
munics_code = tibble::tribble(
~municipio,~cods,
'BELFORD ROXO', 261,
'DUQUE DE CAXIAS', 250,
'DUQUE DE CAXIAS', 251,
'DUQUE DE CAXIAS', 252,
'DUQUE DE CAXIAS', 253,
'DUQUE DE CAXIAS', 254,
'ITABORAÍ', 248,
'ITAGUAÍ', 2380,
'ITAGUAÍ', 2381,
'ITAGUAÍ', 2382,
'ITAGUAÍ', 2383,
'ITAGUAÍ', 2384,
'MAGÉ', 259,
'MANGARATIBA',2386,
'MANGARATIBA',2387,
'MANGARATIBA',2388,
'MARICÁ',249,
'MESQUITA',2655)
data_rais$postal_code 是 data_frame 的一列,其数字可能以 munics_code 中 cods 列中的数字开头,也可能不以数字开头。
比如……
data_rais = data.frame(postal_code = c(2049253, 2033069, 2293513, 2411920, 2284937, 2341811, 2008638,
2279827, NA, 2386135, 2441900, 2392889, 2332114, 2254610,
2114414, 2089509, 2351781, 2451466, 2111632, 2070417, 2079485,
2328146, 2200329, 2116103, NA, 2449114, 2231708, NA,
NA, 2194253),
munic_name = NA)
注意:我不能删除 NA,我不想丢失它们。
【问题讨论】:
-
match可能是你的朋友 :-) -
@Base_R_Best_R 我希望可以,但由于我正在处理敏感数据,这是不可能的。
-
如果数据很敏感,请创建一个具有相同感兴趣列的模型数据集。
-
好的,我会这么做的。
-
"可能会或可能不会以
munics_code中 cods 列中的数字开头" 这是否意味着您需要部分匹配数字?