R извлечение подмножества из кадра данных на основе регулярного выражения, примененного к имени столбца - PullRequest
1 голос
/ 27 февраля 2020

У меня есть фрейм данных R, который я хочу отфильтровать (создать подмножество) на основе имени столбца

Фрейм данных:

df<-data.frame( x = c(1:4), "A-1" = c(rnorm(4,11,4.4)), "A-2" = c(rnorm(4,11,4.4)), "B-2" = c(rnorm(4,11,4.4)))
x   A.1         A.2         B.2
1   8.704004    17.505799   12.025182
2   12.293454   9.452140    10.628045
3   12.100977   3.614021    8.216995
4   9.197816    13.717085   7.203580

В идеале выбор для новый фрейм данных должен соответствовать регулярному выражению, например, со всеми столбцами, соответствующими A в качестве первого символа или, альтернативно, «2» в качестве последнего.

Спасибо

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

В базе R мы можем использовать startsWith и endsWith с префиксом и суффиксом соответственно. Они возвращают логические значения, которые могут быть OR ed (|) для столбцов подмножеств, которые либо начинаются с A, либо заканчиваются на "2".

df[,startsWith(names(df), 'A') | endsWith(names(df), '2')]

#    A.1    A.2   B.2
#1 19.05 11.347 11.03
#2 12.46  7.204 10.09
#3 23.72  8.497 16.13
#4 11.54  2.724 17.61
1 голос
/ 27 февраля 2020

В базе R вы можете выбрать столбцы с помощью регулярного выражения, например:

# A as first character
df[grep("^A", names(df))] 

# 2 as last character
df[grep("2$", names(df))]

dplyr Эквивалент:

library(dplyr)
df %>%
  select(matches("^A"))

df %>%
  select(matches("2$"))
...