【问题标题】:Delete rows with less than 7 Characters删除少于 7 个字符的行
【发布时间】:2014-05-05 20:32:39
【问题描述】:

我有一个包含企业客户信息的数据框,其中包含 12 个变量和 1,246 行。 CustomerID 列中有错误。每个客户 ID 应包含 7 个字符(例如 VALLE03),但有些显示为“GTO1”或“003”——需要删除出现这些错误的整行。

我在想,如果我可以按“CustomerID”中的字符数对 df 进行排序,我可以手动删除不包含 7 个字符的行。但我不确定如何按字符数排序,或者是否有更好的方法。

有什么想法吗?

提前致谢,

保罗

【问题讨论】:

    标签: r


    【解决方案1】:

    假设您的文件名为 data 并且 CustomerID 是一个 char 列:

    data = data[(which(nchar(data$CustomerID) == 7)),]
    

    which 命令过滤给定布尔参数的行。

    【讨论】:

    • 谢谢,非常感谢!为了将来参考,您知道如何按特定列中的字符数对数据框进行排序吗?
    • data[order(nchar(data$CustomerID)),]中使用order
    【解决方案2】:

    nchar() 是您要搜索的函数...Cus

       nchar('VALLE03')
    

    然后通过df[nchar(df$CustumerID) == 7, ] 对data.frame 进行子集化。

    【讨论】:

      【解决方案3】:

      看看nchar。假设你的 data.frame 是 dat 你可以这样做:

      dat[nchar(dat$CustomerID)==7, ]
      

      上面的代码将选择CustomerID 列中至少包含 7 个字符的所有行。

      【讨论】:

        【解决方案4】:

        我只想添加一个同样使用 nchar 的 dplyr 解决方案:

            #library(dplyr)
            filtered <- dplyr::filter(df,nchar(as.character(CustomerID))==7) 
        

        【讨论】:

          猜你喜欢
          • 2021-01-11
          • 1970-01-01
          • 1970-01-01
          • 2016-01-12
          • 2023-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多