如果满足多列条件,则为列的 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
我希望对总列数(在本例中为受教育年限)进行 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