RowSums набор столбцов, если выполняются условия нескольких столбцов - PullRequest
0 голосов
/ 01 декабря 2018

Я хочу RowSums общее количество столбцов (в данном случае годы образования), но только если значение (возраст респондентов) больше определенного числа (> = 16).Количество столбцов больше, чем в примере (до 13 лет для возраста и уровня образования), поэтому я хочу найти эффективный способ получения RowSums, не полагаясь на сумму столбца по столбцу и сохраняя структуру предлагаемого кадра данных в том виде, как он есть.так как я хочу потом связать больше столбцов.

Каков наилучший способ получить из этого фрейма данных [...]

Age1 <- c(21,31,51,72)
Age2 <- c(22,33,34,54)
Age3 <- c(7,11,10,21)
Edu1 <- c(5,10,10,10)
Edu2 <- c(5,10,5,5)
Edu3 <- c(2,5,4,10)
df <- data.frame(Age1, Age2, Age3, Edu1, Edu2, Edu3)

[...] в результаты TotEdu?

enter image description here

1 Ответ

0 голосов
/ 01 декабря 2018

Мы могли бы определить номера столбцов для возраста и образования, предполагая, что это число всегда одинаково (здесь оба равны 3), проверить, какие значения возраста больше 16, и получить соответствующее значение образования и принять rowSums.

age_cols <- 1:3
edu_cols <- 4:6
df$Total_edu <- rowSums(df[edu_cols] * as.numeric(df[age_cols] >= 16))

df

#  Age1 Age2 Age3 Edu1 Edu2 Edu3 Total_edu
#1   21   22    7    5    5    2        10
#2   31   33   11   10   10    5        20
#3   51   34   10   10    5    4        15
#4   72   54   21   10    5   10        25
...