Как сохранить строки на основе первой цифры элементов в R? - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть следующий data.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

как мне это сделать?

Ответы [ 5 ]

0 голосов
/ 26 ноября 2018

с использованием 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
0 голосов
/ 25 ноября 2018

Мы также можем использовать %/%

df[df$crime%/% 10000 == 7, ]
#    coded.month crime
#1     2018-10 71040
#3     2018-10 71013
#4     2018-10 71013
#5     2018-10 72113
0 голосов
/ 25 ноября 2018

Это также включает в себя преобразование значений (неявно) в строки, но это работает:

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

Редактировать: чисто числовое решение:

df[floor(df$crime /  10^floor(log10(df$crime))) == 7, ]
0 голосов
/ 25 ноября 2018

Определяя новый фрейм данных, используя 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
0 голосов
/ 25 ноября 2018

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...