【问题标题】:How do change the choice value in a choiceset using R?如何使用 R 更改选择集中的选择值?
【发布时间】:2020-04-20 19:57:19
【问题描述】:

让这个查询变得简单:Given data = data.frame(mode=c("car","car","car","car"),choice = c(1,0, 0,0),mainmode = c("BS","汽车","活动","TX"));其中 BS = 公共汽车,汽车 = 汽车,活动 = 步行,TX = 出租车。

目标输出 = data.frame(mode = c("car","car","car","car"),choice = c(0,1, 0,0), mainmode=c("BS ","汽车","活动","TX"))。此外,如果“mode”中的任何值与“mainmode”中的任何值都不匹配,在这种情况下,选择值(即 c(1,0,0,0))应与数据中的值保持相同。

谁能帮助我?非常感谢。

【问题讨论】:

    标签: r if-statement data.table dplyr


    【解决方案1】:

    我们可以只比较 (==) 'mainmode' 和 'mode' 以返回可以强制 (+) 为二进制的逻辑向量。这里创建的逻辑向量是'i1',if没有匹配的值然后返回'选择',否则对逻辑向量进行强制(+(i1)

    i1 <- with(data, mainmode == mode)
    data$choice <- if(!any(i1)) data$choice else +(i1)   
    data$choice
    #[1] 0 1 0 0
    

    假设列是character

    数据

    data <- data.frame(mode=c("car","car","car","car"),
        choice = c(1,0, 0,0),mainmode = c("BS","car","active","TX"), 
            stringsAsFactors = FALSE)
    

    【讨论】:

    • @akrun, if mainmode = c("BS","TN","active","TX"),其中 TN =train,在这种情况下,您的代码生成选择 = c(0 , 0, 0, 0) 但我不想更改选择值。在这种情况下,我想要选择 = c(1, 0, 0,0),因为它在给定数据中。
    • @NikhilChandraSarkar 谢谢你的澄清。你能检查我更新的代码吗
    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2021-07-29
    相关资源
    最近更新 更多