0

我正在尝试对数据框中的变量进行变异,该数据框中包含我正在使用的数据集中 55 个变量中的 10 个。这 10 个变量中有 5 个是分类变量,因此,我试图将它们转换为因子(作为字符)。但是,每次 R 进行突变时,它都会将突变应用于这 5 个因素,就好像我从未将它们放入单独的数据框中一样。R 只会在 55 个变量的整个组中将突变应用于它们。我已经突出显示并重新运行整个代码,并多次单独为每个变量运行它仍然无法工作。当我在我想要的十个变量上使用 (view) 函数并将显示的表中的每个变量名悬停时,突变由于某种原因消失了,就好像我没有这样做一样。当我在整个数据集上使用 (view) 并执行相同操作时,突变就在那里。我' 我创建了多个数据框只是试图让它工作。我想也许我必须再次移动变量,然后突变才会出现,但事实并非如此。

现在我也遇到了 R 只应用一个突变的问题。如果我尝试将变量“qualslp”从数字突变为字符,然后对变量“sex”执行相同操作,则 r 会消除“qualslp”上的突变并恢复为数字,而“sex”成为字符向量.

下面提供的代码和屏幕截图。

带有一个突变的 55 个变量的屏幕截图(黄色下划线)

包含我想在其上使用 mutate 函数的 10 个变量的数据框的屏幕截图(以黄色下划线)

sleepdata_nvars <-select(sleepdata,
                     age, sex, alchohol, smokenum, liteslp, wakenite, medhelp, qualslp, depress, ess)

sleepdata_nvars <- mutate(sleepdata,
                      sex = as.character(sex),
                      sex = fct_recode(sex,
                                       "female" = "0",
                                       "male" = "1"))
sleepdata_nvars <- mutate(sleepdata,
                      liteslp = as.character(liteslp),
                      liteslp = fct_recode(liteslp,
                                       "yes" = "1",
                                       "no" = "2"))
sleepdata_nvars <- mutate(sleepdata,
                      wakenite = as.character(wakenite),
                      wakenite = fct_recode(wakenite,
                                       "yes" = "1",
                                       "no" = "2"))
sleepdata_nvars <- mutate(sleepdata,
                      medhelp = as.character(medhelp),
                      medhelp = fct_recode(medhelp,
                                       "yes" = "1",
                                       "no" = "2"))
sleepdata_nvars <- mutate(sleepdata,
                      qualslp = as.character(qualslp),
                      qualslp = fct_recode(qualslp,
                                       "very poor" = "1",
                                       "poor" = "2",
                                       "fair"= "3",
                                       "good" = "4",
                                       "very good" = "5",
                                       "excellent" = "6"))
4

1 回答 1

1

继@MichaelDewar 的评论之后,我认为问题在于您应该只使用一个mutate语句,并将其链接到原始select.

sleepdata_nvars <- sleepdata %>%
  select(age, sex, alchohol, smokenum, liteslp, 
         wakenite, medhelp, qualslp, depress, ess) %>%
  mutate(sex = as.character(sex),
         sex = fct_recode(sex,
                          "female" = "0",
                          "male" = "1"),
         liteslp = as.character(liteslp),
         liteslp = fct_recode(liteslp,
                              "yes" = "1",
                              "no" = "2"),
         wakenite = as.character(wakenite),
         wakenite = fct_recode(wakenite,
                               "yes" = "1",
                               "no" = "2"),
         medhelp = as.character(medhelp),
         medhelp = fct_recode(medhelp,
                              "yes" = "1",
                              "no" = "2"),
         qualslp = as.character(qualslp),
         qualslp = fct_recode(qualslp,
                              "very poor" = "1",
                              "poor" = "2",
                              "fair"= "3",
                              "good" = "4",
                              "very good" = "5",
                              "excellent" = "6")
)
于 2020-12-16T00:09:51.980 回答