You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:32:19