【问题标题】:How to drop a particular element among others in a string如何在字符串中删除特定元素
【发布时间】:2021-07-03 14:13:32
【问题描述】:
ID<-c(1:5)
string<-c("aaa-NA","NA", "bbb-NA-aaa,","bbb-ccc","NA-aaa-ccc")
mydata<-data.frame(ID,string)

我想通过删除NA 来创建一个新变量,只有当它们与其他字符相关联时,例如:

  ID      string new_var
1  1      aaa-NA     aaa
2  2          NA      NA
3  3 bbb-NA-aaa, bbb-aaa
4  4     bbb-ccc bbb-ccc
5  5  NA-aaa-ccc aaa-ccc

【问题讨论】:

  • 你是如何创建这个字符串的。是来自paste 吗?我认为应该避免创建“字符串”。
  • 是的,我是在按个人 ID 分组后通过粘贴创建的
  • 我会考虑使用tidyr::unite(df1, string, col1, col2, col3, na.rm = TRUE, sep="-") 这样可以避免这一步
  • 或者,如果您从单列粘贴,请尝试删除 NA,即 df1 %&gt;% group_by(ID) %&gt;% summarise(string = if(all(is.na(string))) NA_character else str_c(string[complete.cases(string)], collapse= "-"))
  • 我了解,我认为这是一个不错的选择。我会尝试并回到你身边。谢谢。

标签: r string


【解决方案1】:
mydata$new_var <- gsub("-NA|NA-","",mydata$string)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多