【问题标题】:Removing specific integers from columns in a dataframe using R使用 R 从数据框中的列中删除特定整数
【发布时间】:2017-12-12 22:35:25
【问题描述】:

这是我当前的数据框的样子:

Name <- c("John", "Paul", "Ringo", "George")
Loc1 <- c("001001", "001002", "001002", "002002")
Loc2 <- c("001002", "002002", "001002", "001001")
Loc3 <- c("002002", "001002", "001002", "001001")
dat <- data.frame(Name, Loc1, Loc2, Loc3)
dat

这是我想要的结果:

Name <- c("John", "Paul", "Ringo", "George")
Loc1 <- c("11", "12", "12", "22")
Loc2 <- c("12", "22", "12", "11")
Loc3 <- c("22", "12", "12", "11")
result <- data.frame(Name, Loc1, Loc2, Loc3)
result

请注意,数字保持不变,但我正在寻找一种方法来从多列中删除“0”字符并留下其他整数。我已经尝试为此使用 strstring() 和 substr() 函数的各种化身,但似乎一直卡住,因为“0”未被识别为字符。这似乎是一个相当简单的问题,但我需要一些建议。提前致谢。

【问题讨论】:

    标签: r dataframe data-manipulation data-cleaning


    【解决方案1】:

    在除第一列之外的所有列上快速轻松地gsub

    dat[-1] <- lapply(dat[-1], gsub, pattern = "0", replacement = "")
    dat
    #     Name Loc1 Loc2 Loc3
    # 1   John   11   12   22
    # 2   Paul   12   22   12
    # 3  Ringo   12   12   12
    # 4 George   22   11   11
    

    【讨论】:

      【解决方案2】:

      为了使其工作,您需要gsub 和 apply 家族的成员,如下所示:

      Name <- c("John", "Paul", "Ringo", "George")
      Loc1 <- c("001001", "001002", "001002", "002002")
      Loc2 <- c("001002", "002002", "001002", "001001")
      Loc3 <- c("002002", "001002", "001002", "001001")
      dat <- data.frame(Name, Loc1, Loc2, Loc3)
      
      data.frame(sapply(dat, function(x) {gsub("0", "", x)}))
      
      # Name Loc1 Loc2 Loc3
      # 1   John   11   12   22
      # 2   Paul   12   22   12
      # 3  Ringo   12   12   12
      # 4 George   22   11   11
      

      【讨论】:

        【解决方案3】:

        这是tidyverse的选项

        library(tidyverse)
        dat %>%
             mutate_at(vars(matches("Loc")), funs(str_replace_all(., "0", "")))
        #    Name Loc1 Loc2 Loc3
        #1   John   11   12   22
        #2   Paul   12   22   12
        #3  Ringo   12   12   12
        #4 George   22   11   11
        

        【讨论】:

          猜你喜欢
          • 2017-08-17
          • 1970-01-01
          • 1970-01-01
          • 2021-05-07
          • 2018-04-13
          • 1970-01-01
          • 2022-09-22
          • 2022-07-04
          • 2015-12-24
          相关资源
          最近更新 更多