使用If函数,如何将数据框中的文本字符串更改为另一个字符串?

菲利普·奥尔森

使用以下数据集

 structure(list(...1 = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 
9, 10, 11, 12), V1 = c("overstress", "flicker", "lotteri", "life", 
"charg", "capac", "health", "drain", "degrad", "protector", "bright", 
"use", "overstress", "flicker", "lotteri", "life", "charg", "capac", 
"health", "drain", "degrad", "protector", "bright", "use", "overstress", 
"flicker", "lotteri", "life", "charg", "capac", "health", "drain", 
"degrad", "protector", "bright", "use"), term = c("corr1", "corr1", 
"corr1", "corr1", "corr1", "corr1", "corr1", "corr1", "corr1", 
"corr1", "corr1", "corr1", "corr2", "corr2", "corr2", "corr2", 
"corr2", "corr2", "corr2", "corr2", "corr2", "corr2", "corr2", 
"corr2", "corr3", "corr3", "corr3", "corr3", "corr3", "corr3", 
"corr3", "corr3", "corr3", "corr3", "corr3", "corr3"), correlation = c(0.5, 
0.43, 0.42, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.53, 
0.29, 0.25, 0.25, 0.23, 0.2, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, 0.45, 0.16, 0.15)), row.names = c(NA, -36L), class = c("tbl_df", 
"tbl", "data.frame"))

我想将单词是corr1,corr2或corr3更改为toil1,toil2或toil3。我尝试了以下代码,但仅收到以下错误术语:

three_terms_corrs_gathered$term <- if
(three_terms_corrs_gathered$term  == "corr1"){toil1} else if
(three_terms_corrs_gathered$term  == "corr2"){toil2} else
{toil3}

警告信息:

在if(three_terms_corrs_gathered $ term ==“ corr1”){中,条件的长度> 1,并且仅使用第一个元素。因此,它只会更改为第一个条件。我究竟做错了什么?

r2evans

三种选择:

  1. “合并”心态。当您有多个完全不同的匹配项时,这非常有效,因为它不仅对代码有效,而且易于可视化和维护。尽管此处的示例只有两个替换,但是如果corrs_df有2行或200行,则代码不会更改,并且corrs_df匹配任何内容的条目都将被静默丢弃,不会造成任何危害。

    library(dplyr)
    corrs_df <- data.frame(term = c("corr1", "corr2"), newterm = c("toil1", "toil2"))
    dat %>%
      left_join(corrs_df, by = "term") %>%
      slice(c(1:3, 28:30))
    # # A tibble: 6 x 5
    #    ...1 V1         term  correlation newterm
    #   <dbl> <chr>      <chr>       <dbl> <chr>  
    # 1     1 overstress corr1        0.5  toil1  
    # 2     2 flicker    corr1        0.43 toil1  
    # 3     3 lotteri    corr1        0.42 toil1  
    # 4     4 life       corr3       NA    <NA>   
    # 5     5 charg      corr3       NA    <NA>   
    # 6     6 capac      corr3       NA    <NA>   
    
    dat %>%
      left_join(corrs_df, by = "term") %>%
      mutate(term = coalesce(newterm, term)) %>%
      slice(c(1:3, 28:30))
    # # A tibble: 6 x 5
    #    ...1 V1         term  correlation newterm
    #   <dbl> <chr>      <chr>       <dbl> <chr>  
    # 1     1 overstress toil1        0.5  toil1  
    # 2     2 flicker    toil1        0.43 toil1  
    # 3     3 lotteri    toil1        0.42 toil1  
    # 4     4 life       corr3       NA    <NA>   
    # 5     5 charg      corr3       NA    <NA>   
    # 6     6 capac      corr3       NA    <NA>   
    

    您显然可以%>% select(-newterm)。)coalesce函数有效地说“给我这些变量的第一个非NA值”NA当相关联的在newterm发生term变量中不存在corrs_df,其中我们假设的手段,使没有变化。

  2. dplyr::case_when(如果您喜欢它,那么data.table::fcase实际上会做同样的事情。)

    dat %>%
      mutate(
        term = case_when(
          term == "corr1" ~ "toil1",
          term == "corr2" ~ "toil2",
          TRUE ~ term)
      ) %>%
      slice(c(1:3, 28:30))
    # # A tibble: 6 x 4
    #    ...1 V1         term  correlation
    #   <dbl> <chr>      <chr>       <dbl>
    # 1     1 overstress toil1        0.5 
    # 2     2 flicker    toil1        0.43
    # 3     3 lotteri    toil1        0.42
    # 4     4 life       corr3       NA   
    # 5     5 charg      corr3       NA   
    # 6     6 capac      corr3       NA   
    
  3. 嵌套的ifelse实际上,由于您使用的dplyr,这是很多更好的使用if_else有很多原因(例如,这个)。

    dat %>%
      mutate(
        term = if_else(term == "corr1", "toil1",
                       if_else(term == "corr2", "toil2", term))
      ) %>%
      slice(c(1:3, 28:30))
    # # A tibble: 6 x 4
    #    ...1 V1         term  correlation
    #   <dbl> <chr>      <chr>       <dbl>
    # 1     1 overstress toil1        0.5 
    # 2     2 flicker    toil1        0.43
    # 3     3 lotteri    toil1        0.42
    # 4     4 life       corr3       NA   
    # 5     5 charg      corr3       NA   
    # 6     6 capac      corr3       NA   
    

    这对于1或2个嵌套效果很好,但在我看来,它看起来很杂乱,很难遵循;根据我的经验,由于难以遵循,因此可能难以维护,这使得特定选项/值的不正确放置非常简单。我认为可维护性和可读性非常重要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一个字符串数组存储到另一个字符串数组中?

来自分类Dev

swift:如何将一个字符串从textField分配给另一个字符串?

来自分类Dev

如何将一个字符串值与另一个字符串值进行比较?

来自分类Dev

如何将一个字符串插入另一个字符串?

来自分类Dev

以更智能的方式将命令中的字符串更改为另一个字符串

来自分类Dev

当一个字符串在另一个字符串中时如何从数据库获取数据?

来自分类Dev

R:将多个字符串更改为另一个字符串

来自分类Dev

使用动态中的指针将一个字符串复制到另一个字符串

来自分类Dev

如何将不是以(“)字符开头的新行更改为另一个字符串

来自分类Dev

如何将字符串中的索引连接到Python中的另一个字符串

来自分类Dev

Javascript:如何将字符串文字包含到另一个字符串中?

来自分类Dev

如何将文本从.txt文件分离到数据库中的另一列?(定界符是一个字符串)

来自分类Dev

如果与另一个字符串匹配,如何使JavaScript更改字符串?

来自分类Dev

查找字符串中的文本并将整个字符串替换为另一个字符串+ R

来自分类Dev

如何检查一个字符串不包含另一个字符串的文本?

来自分类Dev

不使用内置函数将一个字符串中的字符替换为另一个字符串

来自分类Dev

如何将一个字符串快速复制到另一个字符串的一部分中?

来自分类Dev

人偶中的函数,用于检查一个字符串是否包含另一个字符串

来自分类Dev

如何计算将一个字符串更改为另一字符串所需的次数?

来自分类Dev

将字符串插入C中的另一个字符串

来自分类Dev

如何将一个字符串值除以另一个包含数字值的另一个字符串值

来自分类Dev

如何将对向量中的对的第一个元素(字符串)与另一个字符串进行比较?

来自分类Dev

使用C ++将一个字符串替换为另一个字符串

来自分类Dev

使用 PHP 将一个字符串与另一个字符串匹配

来自分类Dev

AppleScript:删除文本字符串中的最后一个字符

来自分类Dev

如何在Lua中的另一个字符串中插入一个字符串?

来自分类Dev

在数据框中的另一个字符串中搜索字符串的一部分

来自分类Dev

Ruby:如何计算一个字符串出现在另一个字符串中的次数?

来自分类Dev

如何在jquery中的另一个字符串中间附加一个字符串变量?

Related 相关文章

  1. 1

    如何将一个字符串数组存储到另一个字符串数组中?

  2. 2

    swift:如何将一个字符串从textField分配给另一个字符串?

  3. 3

    如何将一个字符串值与另一个字符串值进行比较?

  4. 4

    如何将一个字符串插入另一个字符串?

  5. 5

    以更智能的方式将命令中的字符串更改为另一个字符串

  6. 6

    当一个字符串在另一个字符串中时如何从数据库获取数据?

  7. 7

    R:将多个字符串更改为另一个字符串

  8. 8

    使用动态中的指针将一个字符串复制到另一个字符串

  9. 9

    如何将不是以(“)字符开头的新行更改为另一个字符串

  10. 10

    如何将字符串中的索引连接到Python中的另一个字符串

  11. 11

    Javascript:如何将字符串文字包含到另一个字符串中?

  12. 12

    如何将文本从.txt文件分离到数据库中的另一列?(定界符是一个字符串)

  13. 13

    如果与另一个字符串匹配,如何使JavaScript更改字符串?

  14. 14

    查找字符串中的文本并将整个字符串替换为另一个字符串+ R

  15. 15

    如何检查一个字符串不包含另一个字符串的文本?

  16. 16

    不使用内置函数将一个字符串中的字符替换为另一个字符串

  17. 17

    如何将一个字符串快速复制到另一个字符串的一部分中?

  18. 18

    人偶中的函数,用于检查一个字符串是否包含另一个字符串

  19. 19

    如何计算将一个字符串更改为另一字符串所需的次数?

  20. 20

    将字符串插入C中的另一个字符串

  21. 21

    如何将一个字符串值除以另一个包含数字值的另一个字符串值

  22. 22

    如何将对向量中的对的第一个元素(字符串)与另一个字符串进行比较?

  23. 23

    使用C ++将一个字符串替换为另一个字符串

  24. 24

    使用 PHP 将一个字符串与另一个字符串匹配

  25. 25

    AppleScript:删除文本字符串中的最后一个字符

  26. 26

    如何在Lua中的另一个字符串中插入一个字符串?

  27. 27

    在数据框中的另一个字符串中搜索字符串的一部分

  28. 28

    Ruby:如何计算一个字符串出现在另一个字符串中的次数?

  29. 29

    如何在jquery中的另一个字符串中间附加一个字符串变量?

热门标签

归档