automation - 清理调查数据,需要为 100 的响应创建新变量,有没有快速的方法?
问题描述
我有维生素列,人们可以在其中勾选他们服用的维生素(钙、维生素 D)等。还有一个“其他”列用于未包括在内的维生素,人们可以在其中写下他们服用的东西(例如“我服用一种复合维生素”或“我服用 B12 和一种复合维生素”)有 631 个条目,我想知道是否有一种快速的方法来清理这个?例如,有没有办法自动获取所有“多种维生素”条目并将它们记录为“多种维生素”列中的“是”?
更好的是,有一种方法可以自动读取另一列,将它们添加到该 ID 的现有列中(例如,人 'eee' 输入了 'calcium',但有一个用于钙的刻度选项,所以我希望记录他们的响应在钙柱中)如果没有柱(例如复合维生素没有柱),那么创建一个新柱并为那个人添加它?
It currently looks like this:
ID VitD Calcium FishOil Other
1 aaa <NA> <NA> <NA> <NA>
2 bbb <NA> yes <NA> <NA>
3 ccc <NA> yes <NA> I take a multivitamin
4 ddd yes <NA> yes Multi vitamin
5 eee yes <NA> <NA> Calcium and vitamin C
6 fff <NA> yes yes evening primrose
我用这段代码来制作它:
structure(list(ID = c("aaa", "bbb", "ccc", "ddd", "eee", "fff"), VitD = c(NA, NA, NA, "yes", "yes", NA), Calcium = c(NA,"yes", "yes", NA, NA, "yes"),
FishOil= c(NA, NA, NA, "yes", NA, "yes"), Other= c(NA, NA, "I take a multivitamin", "Multi vitamin", "Calcium and vitamin C", "evening primrose")),
class = "data.frame", row.names = c(NA,-6L))
我希望它看起来像这样:
ID VitD Calcium FishOil multivit VitC Eveprim Other
1 aaa <NA> <NA> <NA> <NA> <NA> <NA> NA
2 bbb <NA> yes <NA> <NA> <NA> <NA> NA
3 ccc <NA> yes <NA> yes <NA> <NA> NA
4 ddd yes <NA> yes yes <NA> <NA> NA
5 eee yes yes <NA> <NA> yes <NA> NA
6 fff <NA> yes yes <NA> <NA> yes NA
我使用了这段代码:
structure(list(ID = c("aaa", "bbb", "ccc", "ddd", "eee", "fff"), VitD = c(NA, NA, NA, "yes", "yes", NA), Calcium = c(NA,"yes", "yes", NA, "yes", "yes"),
FishOil= c(NA, NA, NA, "yes", NA, "yes"), multivit=c(NA, NA, "yes", "yes", NA, NA), VitC=c(NA, NA, NA, NA, "yes", NA), Eveprim=c(NA, NA, NA, NA,NA, "yes"), Other= c(NA, NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,-6L))
目前我手动完成,但这需要很长时间:
#Add a vit c column
survey$vit_C <- rep("1", length(survey$vit_d))
survey$vit_C <- na_if(survey$vit_C, "1")
#variable for the text column words to recode
vitaminC <- c("vitC")
#recode the words
survey <- survey %>%
mutate(vit_C = if_else(bc_text %in% vitaminC, "vitamin C", vit_C),
vit_text = if_else(vit_text %in% vit_C, NA_character_, vit_text))
解决方案
推荐阅读
- module - 如何在 ABAQUS 的 UMAT 子程序中编写 Fortran 模块?
- json - 在 ASP.NET 核心 json 中的所有响应中添加一个字符串
- python - Google Dataflow:未定义全局名称 - apache beam
- python - 无法反序列化解码 JWT python 的关键数据
- javascript - 如果包含/不包含单选按钮值文本,则显示/隐藏 div
- java - 查找字符串中重复次数最多的单词
- java - CompletableFuture uniApply 方法
- python - 如何总结输入的数字范围?
- php - cron 输出文件未记录 Symfony 控制台异常
- java - 无限循环检测最新文件