如果满足多列条件,则为列的 RowSums 集合

RowSums set of columns if multiple columns conditions are met

我希望对总列数(在本例中为受教育年限)进行 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 结果?

我们可以定义年龄和教育的列号,假设数字总是相同(这里都是 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