【问题标题】:Display number of rows containing a range of numbers (between 0-9) in R在 R 中显示包含数字范围(0-9 之间)的行数
【发布时间】:2021-04-14 03:28:36
【问题描述】:

我正在尝试使用 R 计算我的数据集(称为数据)中包含一系列数字(例如 0 到 9 之间)的行数。我没有创建数据框,我的数据集是直接从csv 文件到 R.

数据集(输入)示例

MESSAGE
I have to wait 3 days
Feel quite tired
No way is 7pm already
It is too late now
This is beautiful

所以输出将是 2 行(第 1 行和第 2 行)

我尝试了以下代码,但它为我提供了错误的输出帖子数 (3) - 所以我知道我肯定做错了什么。

    data = read.csv (xxxxxx)
    #count number of rows that contain numbers between 0 and 9 
    numbers= filter(data, !grepl("[0-9]",MESSAGE))
    length(numbers) 

提前谢谢你。

【问题讨论】:

    标签: r filter rows


    【解决方案1】:

    filter 函数返回一个数据帧并在数据帧上计数length 返回列数而不是行数。此外,您正在使用正则表达式通过在前面引入 ! 来选择没有数字的行。

    您可以使用sum。 +grepl

    result <- sum(grepl('[0-9]', data$MESSAGE))
    

    【讨论】:

      【解决方案2】:

      如果至少有一个数字,也许你可以试试下面的代码

      > length(grep("\\d", MESSAGE, value = TRUE))
      [1] 2
      

      如果你想找出有单个数字的行,你可以试试

      > length(grep("\\b\\d(?![0-9])", MESSAGE, value = TRUE, perl = TRUE))
      [1] 2
      

      数据

      MESSAGE <- c(
        "I have to wait 3 days",
        "Feel quite tired",
        "No way is 7pm already",
        "It is too late now",
        "This is beautiful"
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多