【问题标题】:R - if field A is empty, and field B contains certain partial string, add word to field AR - 如果字段 A 为空,并且字段 B 包含某些部分字符串,则将单词添加到字段 A
【发布时间】:2021-12-06 17:42:47
【问题描述】:

我有一个数据框,其中一个字段包含地理名称或短语 (locality.curated),以及一个包含这些地区缩写代码的相应字段(转换),但并非所有缩写都已填写,有些是 NA。我想通过匹配 locality.curated 中的关键字来为转换字段添加缩写,但如果转换字段已被占用,则不要覆盖它。

即: 如果 convert = NA AND locality curated = "Delaware" 然后将 "USA" 粘贴到 curated。

我尝试了 ifelse 和 if 的各种排列,但要么无法正确使用语法,要么就像我在下面的最新尝试一样,似乎没有修改数据框。

if(is.na(test$convert) && grepl("Delaware", test$locality.curated, value=T)) {paste("USA", test$convert)}

虚拟数据,输入:

test <- data.frame(locality.curated=c("Canada to Delaware River", "California", "Delaware", "Wilmington Delaware", "Alaska"), convert=c("CAN","USA", "USA",NA,NA))

想要的输出:

test.out <- data.frame(locality.curated=c("Canada to Delaware River", "California", "Delaware", "Wilmington Delaware", "Alaska"), convert=c("CAN","USA", "USA","USA",NA))

非常感谢!

【问题讨论】:

    标签: r if-statement conditional-statements


    【解决方案1】:
    test$new <- ifelse(is.na(test$convert) & grepl(pattern = "Delaware", x = test$locality.curated),
           yes = "USA",
           no = test$convert)
    1 Canada to Delaware River     CAN  CAN
    2               California     USA  USA
    3                 Delaware     USA  USA
    4      Wilmington Delaware    <NA>  USA
    5                   Alaska    <NA> <NA>
    
    

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 2011-06-09
      • 2015-06-16
      • 1970-01-01
      相关资源
      最近更新 更多