我有以下数据。frame
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
我该怎么办?
答案 0 :(得分:1)
您可以使用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
答案 1 :(得分:1)
我们也可以使用%/%
df[df$crime%/% 10000 == 7, ]
# coded.month crime
#1 2018-10 71040
#3 2018-10 71013
#4 2018-10 71013
#5 2018-10 72113
答案 2 :(得分:1)
使用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
答案 3 :(得分:0)
这还涉及将值(隐式地)转换为字符串,但是它可以工作:
df[grep("^7", df$crime), ]
编辑:纯数值解决方案:
df[floor(df$crime / 10^floor(log10(df$crime))) == 7, ]
答案 4 :(得分:0)
通过使用grepl()
定义新的数据帧,以仅匹配以“ 7”开头的df$crime
值:
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