如何用apply()按名称选择变量,优化大数据集的养家者性别提取?
高效提取家庭养家者性别变量
我的家庭数据集如下:
household_data <- data.frame( id = 1:4, gender_component_1 = c(1,2,2,2), gender_component_2 = c(2,1,1,2), bread_winner = c(1,1,2,1) )
我需要构建变量gender_bread_winner,用来记录家庭中养家者的性别——根据bread_winner的数值(1或2),提取对应gender_component_1或gender_component_2的值。
我原本用循环实现,但实际数据集规模极大,这个方案效率极低:
var_max <- paste("gender_component", household_data$bread_winner, sep = "_") for (i in 1:nrow(household_data)) { household_data$gender_bread_winner[i] <- select(household_data[i,], var_max[i]) }
请问是否可以用apply或类似方法实现相同逻辑?我自己尝试了但没成功。
补充:感谢各位的解答!最终我采用多个ifelse语句实现了需求:
dataset$sesso_max <- NA dataset$sesso_max <- ifelse(dataset$max_percettore == 1, dataset$sesso_1, dataset$sesso_max) dataset$sesso_max <- ifelse(dataset$max_percettore == 2, dataset$sesso_2, dataset$sesso_max) dataset$sesso_max <- ifelse(dataset$max_percettore == 3, dataset$sesso_3, dataset$sesso_max) dataset$sesso_max <- ifelse(dataset$max_percettore == 4, dataset$sesso_4, dataset$sesso_max) dataset$sesso_max <- ifelse(dataset$max_percettore == 5, dataset$sesso_5, dataset$sesso_max) dataset$sesso_max <- ifelse(dataset$max_percettore == 6, dataset$sesso_6, dataset$sesso_max)
内容的提问来源于stack exchange,提问作者Humean
相关产品推荐
相关产品推荐

