如何使用R更改选项集中的选项值?

如何使用R更改选项集中的选项值?,r,if-statement,dplyr,data.table,mutate,R,If Statement,Dplyr,Data.table,Mutate,使这个查询变得简单:给定的数据=data.frame(模式=c(“汽车”、“汽车”、“汽车”、“汽车”)),选择=c(1,0,0),主模式=c(“BS”、“汽车”、“活动”、“发送”);其中BS=公共汽车,car=汽车,active=步行,TX=出租车 目标输出=数据帧(模式=c(“汽车”,“汽车”,“汽车”,“汽车”),选择=c(0,1,0,0),主模式=c(“BS”,“汽车”,“活动”,“发送”))。此外,如果“模式”中的任何值与“主模式”中的任何值不匹配,则在这种情况下,选择值(即c(1,

使这个查询变得简单:给定的数据=data.frame(模式=c(“汽车”、“汽车”、“汽车”、“汽车”)),选择=c(1,0,0),主模式=c(“BS”、“汽车”、“活动”、“发送”);其中BS=公共汽车,car=汽车,active=步行,TX=出租车

目标输出=数据帧(模式=c(“汽车”,“汽车”,“汽车”,“汽车”),选择=c(0,1,0,0),主模式=c(“BS”,“汽车”,“活动”,“发送”))。此外,如果“模式”中的任何值与“主模式”中的任何值不匹配,则在这种情况下,选择值(即c(1,0,0,0))应保持与数据中的值相同

有人能帮我吗?非常感谢。

我们只需比较(
==
)mainmode和“mode”就可以返回一个可以强制(
+
)为二进制的逻辑向量。这里创建的逻辑向量是“i1”,如果没有匹配的值,则返回“choice”,否则对逻辑向量进行强制(
+(i1)


@akrun,如果mainmode=c(“BS”、“TN”、“active”、“TX”),其中TN=train,在这种情况下,您的代码生成choice=c(0,0,0,0),但我不想更改choice值。在这种情况下,我希望choice=c(1,0,0,0),因为它是在给定的数据中。@NikhilChandraSarkar感谢您的澄清。你能检查一下我的更新代码吗
i1 <- with(data, mainmode == mode)
data$choice <- if(!any(i1)) data$choice else +(i1)   
data$choice
#[1] 0 1 0 0
data <- data.frame(mode=c("car","car","car","car"),
    choice = c(1,0, 0,0),mainmode = c("BS","car","active","TX"), 
        stringsAsFactors = FALSE)