我在数据集中重新编码了一堆变量,并为新重新编码的变量提供了前缀" r _"在我的数据集中。
我想在对上运行table
以确保重新编码是正确的。像table(v1, r_v1)
这样的东西,但是我需要为很多变量做这件事。它们没有任何特定的顺序,因此我无法使用索引。
以下是可以使用的数据的可重现示例(也有关于优化该代码的任何提示!)。
mtcars %>% select(c(disp,hp)) %>%
mutate_all(funs(if_else(.>100,1,0))) %>%
rename_(.dots=setNames(names(.), paste0('r_', names(.)))) %>%
cbind(mtcars,.)
有什么想法吗?
答案 0 :(得分:1)
我只想使用变量名和简单的for循环。调用修改后的数据dd
,
orig = c("disp", "hp")
trans = paste0("r_", orig)
check_list = list()
for (i in seq_along(orig)) {
check_list[[i]] = table(dd[[orig[i]]], dd[[trans[i]]])
# or whatever other check you want to do
}
check_list
然后,您可以逐个检查check_list
个内容。
答案 1 :(得分:1)
要保持整洁的格式: 库(purrr) 库(tidyr)
mtcars %>%
select(disp,hp) %>%
mutate_all(funs(r = if_else(.>100,1,0))) %>%
mutate(index = row_number()) %>%
gather(key = key, value = value, -index) %>%
separate(key, c("Variable", "Type")) %>%
mutate(Type = ifelse(is.na(Type), "Original", "Recode")) %>%
spread(key = Type, value = value) %>%
select(-index) %>%
split(.$Variable) %>%
map(~ select(.,-Variable)) %>%
map(~ table(.))