【问题标题】:Find semicolon in dataframe R [duplicate]在数据框R中查找分号[重复]
【发布时间】:2023-04-05 11:15:01
【问题描述】:

我有这个数据框:

id <- c(1,2,3,4,5)
org <- c(NA, "Org-A", "Org-A;Org-B", "Org-C", "Org-A;Org-B;Org-C")
df <- data.frame(id, org)

我想查找每个 ID 的组织数量。但是这个表中的'Organization'是用分号隔开的,我想要达到的结果:

  id               org   num
1  1              <NA>   NA
2  2             Org-A   1
3  3       Org-A;Org-B   2
4  4             Org-C   1
5  5 Org-A;Org-B;Org-C   3

我认为解决这个问题需要这样的东西:

df['num'] = ifelse(is.na(df['org']), NA, ifelse( "something about regex", "count the number of semicolons", 1))

【问题讨论】:

    标签: r regex dataframe


    【解决方案1】:

    我们可以在分隔符;上使用str_count,然后加1

    library(stringr)
    library(dplyr)
    df <- df %>% 
             mutate(num = str_count(org, ";")+1)
    

    -输出

    df
    #  id               org num
    #1  1              <NA>  NA
    #2  2             Org-A   1
    #3  3       Org-A;Org-B   2
    #4  4             Org-C   1
    #5  5 Org-A;Org-B;Org-C   3
    

    【讨论】:

      【解决方案2】:

      这里有一些其他的基于 R 的选项:

      • gregexpr
      transform(
        df,
        num = replace(lengths(gregexpr("Org-", org)), is.na(org), NA)
      )
      
      • strsplit
      transform(
        df,
        num = replace(lengths(strsplit(org, ";")),is.na(org),NA)
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-14
        • 1970-01-01
        • 1970-01-01
        • 2016-11-03
        • 1970-01-01
        • 2015-03-22
        • 2016-09-16
        相关资源
        最近更新 更多