Как изменить значение выбора в наборе с помощью R? - PullRequest
1 голос
/ 20 апреля 2020

Сделайте этот запрос простым: данные data = data.frame (mode = c ("car", "car", "car", "car"), выбор = c (1,0, 0, 0) mainmode = c («BS», «car», «active», «TX»)); где BS = автобус, автомобиль = автомобиль, активный = ходьба, TX = такси.

Целевой выход = data.frame (mode = c ("автомобиль", "автомобиль", "автомобиль", "автомобиль"), выбор = c (0,1, 0,0) , mainmode = c ("BS", "car", "active", "TX")). Кроме того, если какое-либо значение из «mode» не совпадает ни с одним из значений в «mainmode», в этом случае значения выбора (т. Е. c (1,0,0,0)) должны оставаться такими же, как и в данных ,

Кто-нибудь может мне помочь? Большое спасибо заранее.

1 Ответ

1 голос
/ 20 апреля 2020

Мы можем просто сравнить (==) «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)
...