代码之家  ›  专栏  ›  技术社区  ›  Nathan123

如何根据r中元素的第一位保留行?

r
  •  2
  • Nathan123  · 技术社区  · 6 年前

    我有以下数据框

    crime<-c(71040,142320,71013,71013,72113)
    coded.month<-c("2018-10","2018-10","2018-10","2018-10","2018-10")
    df<-data.frame(coded.month,crime)
      coded.month  crime
    1     2018-10  71040
    2     2018-10 142320
    3     2018-10  71013
    4     2018-10  71013
    5     2018-10  72113
    

    基本上,我想分离出犯罪率第一位数所在的所有行 7

      coded.month  crime
    1     2018-10  71040
    3     2018-10  71013
    4     2018-10  71013
    5     2018-10  72113
    

    我该怎么办?

    5 回复  |  直到 6 年前
        1
  •  1
  •   Julius Vainora    6 年前

    你可以用 substr

    df[substr(df$crime, 0, 1) == 7, ]
    #   coded.month crime
    # 1     2018-10 71040
    # 3     2018-10 71013
    # 4     2018-10 71013
    # 5     2018-10 72113
    
        2
  •  1
  •   akrun    6 年前

    我们也可以使用 %/%

    df[df$crime%/% 10000 == 7, ]
    #    coded.month crime
    #1     2018-10 71040
    #3     2018-10 71013
    #4     2018-10 71013
    #5     2018-10 72113
    
        3
  •  1
  •   moodymudskipper    6 年前

    使用 startsWith :

    subset(df, startsWith(as.character(crime),"7"))
    #   coded.month crime
    # 1     2018-10 71040
    # 3     2018-10 71013
    # 4     2018-10 71013
    # 5     2018-10 72113
    
        4
  •  0
  •   Chris Ruehlemann    6 年前

    通过使用 grepl() df$crime 以“7”开头的值:

    df_new <- df[grepl("^7", df$crime, perl = T),]
    df_new
      coded.month crime
    1     2018-10 71040
    3     2018-10 71013
    4     2018-10 71013
    5     2018-10 72113
    
        5
  •  0
  •   Kamil Bartoń    6 年前

    这还涉及将值(隐式)转换为字符串,但它可以:

     df[grep("^7", df$crime), ]
    

    编辑:纯数值解:

    df[floor(df$crime /  10^floor(log10(df$crime))) == 7, ]