R 如何基于其他变量的匹配名称使用ifelse创建多个变量?

R 如何基于其他变量的匹配名称使用ifelse创建多个变量?,r,R,我真的很难清楚地表达我的问题,所以这实际上可能是一个与标题所暗示的不同的问题! 我有一个包含6个因子变量的数据框架。变量名为: var_1_1 var_1_2 var_2_1 var_2_2 var_3_1 var_3_2 对于以1结尾的所有变量,级别为“是”、“否”和“不知道”。所有以两个结尾的变量都有两个级别——“是”和“否” 如果变量名的前5个字符匹配,我想创建一个新变量,该变量将两个半匹配变量的“是”和“否”级别相加。因此,我将得到总共9个变量,如下所示: var_1_1 var_1_

我真的很难清楚地表达我的问题,所以这实际上可能是一个与标题所暗示的不同的问题! 我有一个包含6个因子变量的数据框架。变量名为:

var_1_1
var_1_2
var_2_1
var_2_2
var_3_1
var_3_2
对于以1结尾的所有变量,级别为“是”、“否”和“不知道”。所有以两个结尾的变量都有两个级别——“是”和“否”

如果变量名的前5个字符匹配,我想创建一个新变量,该变量将两个半匹配变量的“是”和“否”级别相加。因此,我将得到总共9个变量,如下所示:

var_1_1
var_1_2
var_1_3
var_2_1
var_2_2
var_2_3
var_3_1
var_3_2
var_3_3
我的第一个想法是使用3条ifelse语句来生成新变量,但我正试图减少代码中的重复。我想它可以通过for循环或apply来完成,但我自己在尝试这样做时感到非常困惑。如有任何建议,将不胜感激

这是我最初打算做的,但我认为可能有一种方法可以减少重复性

df$var_1_3 <- ifelse(df$var_1_1=="Yes" | df$var_1_2=="Yes","Yes","No") 

df$var_1_3 <- as.factor(df$var_1_3)

df$var_1_3一个选项是根据列名上的子字符串将数据集拆分为一个列表

grp <- sub("_\\d+$", "", names(df1))
#or
#grp <- substr(names(df1), 1, 5)
lst1 <- split.default(df1, grp)

一个选项是根据列名上的子字符串将数据集拆分为一个列表

grp <- sub("_\\d+$", "", names(df1))
#or
#grp <- substr(names(df1), 1, 5)
lst1 <- split.default(df1, grp)
请回答你的问题!“…在你的问题中!”请在你的问题中给一个a!“……在你的问题中!”