Подтвердить что ты не робот

Использование grep для подмножества кадра данных в R

У меня возникают проблемы с подмножеством моих данных. Я хочу, чтобы данные были подмножеством в столбце x, где первые 3 символа начинаются с G45.

Мой кадр данных:

 x <- c("G448", "G459", "G479", "G406")  
 y <- c(1:4)
 My.Data <- data.frame (x,y)

Я пробовал:

 subset (My.Data, x=="G45*")

Но я не уверен, как использовать подстановочные знаки. Я также попробовал grep(), чтобы найти указатели:

 grep  ("G45*", My.Data$x)

но он возвращает все 4 строки, а не только те, которые начинают G45, вероятно, также, поскольку я не уверен, как использовать подстановочные знаки.

4b9b3361

Ответ 1

Это довольно простое использование [ для извлечения:

grep даст вам позицию, в которой он соответствует вашему шаблону поиска (если вы не используете value = TRUE).

grep("^G45", My.Data$x)
# [1] 2

Поскольку вы выполняете поиск в пределах значений одного столбца, это фактически соответствует индексу строки. Поэтому используйте [ (где вы должны использовать My.Data[rows, cols] для получения определенных строк и столбцов).

My.Data[grep("^G45", My.Data$x), ]
#      x y
# 2 G459 2

Страница справки для subset показывает, как вы можете использовать grep и grepl с помощью subset, если вы предпочитаете использовать эту функцию над [. Вот пример.

subset(My.Data, grepl("^G45", My.Data$x))
#      x y
# 2 G459 2