2015-09-15 2 views
0

Уверен, что в этом вопросе были заданы стеки времени, но я не смог найти решение.R Как заменить значение переменной условно

Я пытаюсь условно заменить значение второй переменной на основе значения первой переменной. Вот данные.

MAKE Continent 
1 HOLDEN  US 
2 HOLDEN  US 
3 FORD  US 
4 FORD  US 

if(gsample$MAKE == "HOLDEN") gsample$Continent = "AUS" 

Предупреждение Сообщение:

In if (gsample$MAKE == "HOLDEN") gsample$Continent = "AUS" : 
    the condition has length > 1 and only the first element will be used 
+0

Вы можете использовать 'ifelse', который векторизован, т.е.' with (gsample, ifelse (MAKE == 'HOLDEN', 'AUS', Continent)) 'или просто' gsample $ Continent [gsample $ MAKE == 'HOLDEN '] <-' AUS'' (Предположим, что столбец является классом 'character'). Или быстрый вариант с использованием 'data.table' -' library (data.table); setDT (gsample) [MAKE == 'HOLDEN', Continent: = 'AUS'] ' – akrun

+0

' gsample $ Continent <- ifelse (gsample $ MAKE == "HOLDEN", ​​"AUS", gsample $ Continent) ' –

+0

Thankyou Avinash Raj & akrun. –

ответ

0
gsample$Continent <- ifelse(gsample$MAKE == "HOLDEN", "AUS","US") 
2

на основе логического условия MAKE=='HOLDEN', мы используем ifelse вернуть «AUS», если это условие TRUE либо возвращают соответствующие значения «Континента ».

gsample$Continent <- with(gsample, ifelse(MAKE=='HOLDEN', 'AUS', Continent)) 

Или мы используем логический индекс для подмножества «Континент» и заменяем его назначением.

gsample$Continent[gsample$MAKE=='HOLDEN'] <- 'AUS' 

Или мы можем использовать data.table. Превратим «data.frame» в «data.table» (setDT(gsample)), основанный на логическом состоянии в i, мы относим (:=) континенту «AUS»

library(data.table) 
setDT(gsample)[MAKE=='HOLDEN', Continent:= 'AUS'] 

ПРИМЕЧАНИЕ: Мы предположили, что Столбец «Континент» - character.

1

Предположим, что вы хотите изменить значение одного столбца на основе значения значения в другом столбце. Используйте следующее;

df$Continent[df$MAKE == 'HOLDEN'] <- 'AUS' 

Это позволит быстро скопировать все значения в dataferame.

+0

Это зависит от столбца 'Continent', который является символом, а не фактором. –

Смежные вопросы