подмножество фрейма данных по сложному шаблону имен столбцов

У меня есть набор данных, который выглядит следующим образом:

два раунда данных (.t0 а также.t1)несколько шкал (this а такжеthat)несколько предметов в масштабе (1, 22, 22a)несколько переменных игнорировать (v2, v3, ignore.t0, ignore.t1, this.t0, this.t1, that.t0, that.t1)

.

dat <- data.frame(id = seq(from=1, to=10, by=1),
                  v2 = rnorm(10),
                  v3 = rnorm(10),
                  ignore.t0 = rnorm(10),
                  this.t0 = rnorm(10),
                  this1.t0 = rnorm(10),
                  this22.t0 = rnorm(10),
                  this22a.t0 = rnorm(10),
                  that.t0 = rnorm(10),
                  that1.t0 = rnorm(10),
                  that22.t0 = rnorm(10),
                  that22a.t0 = rnorm(10),
                  ignore.t1 = rnorm(10),
                  this.t1 = rnorm(10),
                  this1.t1 = rnorm(10),
                  this22.t1 = rnorm(10),
                  this22a.t1 = rnorm(10),
                  that.t1 = rnorm(10),
                  that1.t1 = rnorm(10),
                  that22.t1 = rnorm(10),
                  that22a.t1 = rnorm(10))

Я хочу, чтобы включить подкадр данных, чтобы включитьid и только столбцы с:

название шкалы (this или жеthat) А ТАКЖЕчисло (1.) ИЛИ число и буква (22a.) до периода

Итак, в конце концов, фрейм данных должен выглядеть так:

dat2 <- data.frame(
                   id = seq(from=1, to=10, by=1),
                   #v2 = rnorm(10),
                   #v3 = rnorm(10),
                   #ignore.t0 = rnorm(10),
                   #this.t0 = rnorm(10),
                   this1.t0 = rnorm(10),
                   this22.t0 = rnorm(10),
                   this22a.t0 = rnorm(10),
                   #that.t0 = rnorm(10),
                   that1.t0 = rnorm(10),
                   that22.t0 = rnorm(10),
                   that22a.t0 = rnorm(10),
                   #ignore.t1 = rnorm(10),
                   #this.t1 = rnorm(10),
                   this1.t1 = rnorm(10),
                   this22.t1 = rnorm(10),
                   this22a.t1 = rnorm(10),
                   #that.t1 = rnorm(10),
                   that1.t1 = rnorm(10),
                   that22.t1 = rnorm(10),
                   that22a.t1 = rnorm(10))

Фрейм данных намного больше, чем представлен здесь, поэтому ввод индексов столбцов невозможен. Также невозможно просто искать имена шкал, потому чтоthis.t0, this.t1, that.t0, а такжеthat.t1 будет пойман.

# not quite right
dat2$id <- dat$id
scales <- c("this", "that")
keep.index <- grep(paste(scales,collapse="|"), names(dat))
temp <- dat[keep.index]
dat2 <- cbind(dat2, temp)

Как я могу изменить шаблон grep для поиска числа ИЛИ (числа и символа) перед точкой? Или есть лучший подход все вместе?

Ответы на вопрос(1)

Ваш ответ на вопрос