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

如何根据r中元素的第一位保留行?,r,R,我有以下数据框 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 20

我有以下数据框

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

我该怎么做?

您可以使用
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

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

 df[grep("^7", df$crime), ]
编辑:纯数值解:

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

通过使用
grepl()
定义一个新的数据帧,以仅匹配那些以“7”开头的
df$crime
值:


df_new我们也可以使用
%/%

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

使用
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
df[df$crime%/% 10000 == 7, ]
#    coded.month crime
#1     2018-10 71040
#3     2018-10 71013
#4     2018-10 71013
#5     2018-10 72113
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