【问题标题】:What is wrong about my syntax using the mutate and recode function?使用 mutate 和 recode 函数的语法有什么问题?
【发布时间】:2021-01-13 17:38:15
【问题描述】:

我正在尝试在我的数据框 na.df 中重新编码变量 FamilyStatus。字符(“ledig”、“verheiratet”和“sonstiges”应该用数字重新编码。 我知道,已经有很多类似的问题和答案,但没有解决我的问题,所以我在这里问。相同的代码结构适用于我的其他数据帧。但是这里有什么问题呢?

这是我的示例数据:


head(na.df)
# A tibble: 6 x 5
  StudyID   Age FamilyStatus EducationalLevel         CycleLength
    <dbl> <dbl> <chr>        <chr>                          <dbl>
1    1016    23 ledig        Gymnasium                         28
2    1007    28 ledig        Gymnasium                         30
3    1014    23 ledig        Gymnasium                         28
4    1006    21 ledig        Gymnasium                         28
5    1050    41 ledig        Universität / Hochschule          27
6    1001    26 ledig        Gymnasium                          4


na.df.1 <- mutate(na.df, 
                  FamilyStatus = recode(FamilyStatus, 
                                        "ledig"= '1',
                                        "verheiratet" = '2', 
                                        "sonstiges" = '3'),
                  EducationalLevel = recode(EducationalLevel,
                                          "Sekundar- / Realschule"= '1',
                                          "Gymnasium" = '2',
                                          "Universität / Hochschule" = '3'))


Fehler: Problem with `mutate()` input `FamilyStatus`.
x unbenutzte Argumente (ledig = "1", verheiratet = "2", sonstiges = "3")
ℹ Input `FamilyStatus` is `recode(FamilyStatus, ledig = "1", verheiratet = "2", sonstiges = "3")`.
Run `rlang::last_error()` to see where the error occurred.

感谢您的帮助!

【问题讨论】:

  • 澄清一下,您想重新编码为“1”而不是 1?
  • 我需要一个数字向量进行进一步测试 -> 所以我想重新编码 1 而不是 ledig 等,并为第二个变量 1 而不是 Sekundar-/ Realschule。
  • 我就是这么想的。我不认为你想要“ledig”='1'...我认为你想要“ledig”=1,其他变量也是如此
  • 请提供na.df的样本数据,以便我们看到您要做什么。
  • 好的,我删除了 ' ' 在 1 但它仍然给出同样的错误

标签: r tidyverse dplyr recode


【解决方案1】:

对于“...input FamilyStatus”是否仍然给出相同的错误消息?

na.df1 <- na.df %>% 
  mutate(FamilyStatus = recode(FamilyStatus, 
                               "ledig" = 1,
                               "verheiratet" = 2,
                               "sonstiges" = 3
                               ))

【讨论】:

    【解决方案2】:
    dplyr::recode(na.df$FamilyStatus, ledig= "1", verheiratet="2", sonstiges="3")
    

    成功了!!

    编辑

    这似乎是名称间距问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多