Как суммировать значения разных столбцов в цикле данных по именам переменных - PullRequest
0 голосов
/ 11 февраля 2019

Я относительно новичок в R (раньше работал в Stata), поэтому извините, если вопрос слишком тривиален.

У меня есть фрейм данных с переменными, названными последовательно, следуя следующей логике: q12.XY где X принимает значения от 1 до 9, а Y от 1 до 5

Мне нужно сложить значения переменных всех переменных q12.XY с числами Y от 1 до3 (но НЕ те, которые заканчиваются числом 4 или 5)

В идеале я бы написал цикл, основанный на последовательных номерах переменных, а именно что-то вроде:

df$test <- 0
for(i in 1:9){
     for(j in 1:3){
       df$test <- df$test+ df$q12.i.j
      }
 }

Это, очевидно,не работают.

Я также пытался с помощью команд "rowSums" и "subset"

df$test <- rowSums(subset(df,select= ...)

Однако я нахожу это немного громоздким, так как номера столбцов не являются последовательными, и я делаюне хочу вводить имя всех переменных.

Есть предложения, как это сделать?

1 Ответ

0 голосов
/ 11 февраля 2019

Мы можем использовать grep, чтобы получить совпадение

rowSums(df[grep("q12\\.[1-9]\\.[1-3]", names(df))])

или, если присутствуют все имена столбцов, то использовать точное совпадение, создавая имена столбцов с paste

rowSums(df[paste0(rep(paste0("q12.", 1:9, "."), 3), 1:3)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...