0

我希望 RowSums 列的总数(在这种情况下是受教育年限),但前提是值(受访者的年龄)大于某个数字(> = 16)。列数大于示例(年龄和教育程度最多为 13),因此我希望找到一种有效的方法来实现 RowSums,而不依赖于逐列求和并保持所提议数据框的结构原样因为我希望之后 cbind 更多列。

从此数据框获取的最佳方法是什么 [...]

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 结果?

在此处输入图像描述

4

1 回答 1

2

我们可以定义年龄和教育的列号,假设数字始终相同(这里都是 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
于 2018-12-01T09:19:01.907 回答