这也让我想起了我刚开始使用 R 的时候,我走过去问数据科学家同样的问题。
他们与我分享了在这些情况下通常更可取的不同方法。我已经回顾了很多次,并且很高兴能早点学习它。
数据库规范化方法(除非有人可以为我们提供更好的名称)涉及将您的代码值映射到单独的数据帧中。然后,您将映射值的集合和join 它们带到您要编码的数据帧中。
这有助于让代码更严格地负责操作,而数据帧负责保存值/数据。这不仅可以加快您的大部分工作,使您免于在硬编码的查找表中手动编码,而且从长远来看,当有人在调试或执行修改和重新开发时,它会变得更加容易。
标准化的数据管理方法如下所示:
# your code mapping
df_map <- tribble(~subject, ~subj_cd,
"chemistry", 1,
"biology", 1,
"physics", 0)
# a dummy raw dataframe that you might be wanting to encode
df_raw <- tibble(stud_id = 2678:2877,
subject = sample(c("chemistry",
"biology",
"physics",
"astronomy"), 200, replace = TRUE))
# encoding the data
df_coded <-
df_raw %>%
left_join(df_map)
df_code
> df_coded
# A tibble: 200 x 3
stud_id subject subj_cd
<int> <chr> <dbl>
1 2678 physics 2
2 2679 physics 2
3 2680 biology 1
4 2681 astronomy NA
5 2682 chemistry 1
6 2683 chemistry 1
7 2684 physics 2
8 2685 chemistry 1
9 2686 chemistry 1
10 2687 astronomy NA
# ... with 190 more rows
如果您发现自己需要一种快速简便的方法来构建更长的代码图(或者,尤其是与其他人分享它们),那么您可能会发现 Jenny Brian 的 googlesheets 包非常有用(她是团队成员 @ 987654326@) 真的helpful vignette for it can be found here