2013-05-01 3 views
1

Я пытаюсь ввести выходные и выходные дни, используя числовые значения, такие как «Понедельник», «Вторник», «Пятница» = 0 и «Суббота»/«Воскресенье» = 1. I в настоящее время есть следующие данные:Назначение значений с использованием логических операторов

head(bike.d)

Day Day.Code 
    Sunday  4 
    Sunday  4 
    Sunday  4 
    Sunday  4 
    Sunday  4 
    Sunday  4 

хвост (bike.d)

Day Day.Code 
    Saturday 3 
    Saturday 3 
    Saturday 3 
    Saturday 3 
    Saturday 3 
    Saturday 3 

Я кодированный столбец День численно с помощью:

Day.Code = as.numeric(bike.d$Day)

Где пятница = 1, понедельник = 2, суббота = 3, воскресенье = 4, четверг = 5, вторник = 6, среда = 7.

Я пытался использовать логические операторы, чтобы назначить двоичные значения с будни = 0 и в выходные дни = 1. я попытался вариация следующего аргумента, но я получаю следующий результат:

bike.d[,2 == 3|4]=1 

head(bike.d) 

    Day Day.Code 
    1   1 
    1   1 
    1   1 
    1   1 
    1   1 
    1   1 

tail(bike.d)

Day Day.Code 
    1   1 
    1   1 
    1   1 
    1   1 
    1   1 
    1   1 

есть ли способ я могу создать этот аргумент, чтобы текст значения в столбце «День» сохранились? И чтобы двоичный код был введен в столбце Day.code или в новый столбец?

Благодарим за помощь!

+0

Можете ли вы сделать ваш пример воспроизводимым? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

Посмотрите на 'merge', это упростит вашу жизнь. – flodel

ответ

1

ifelse должно быть именно то, что вам нужно здесь (есть много других способов сделать это):

bike.d$Weekend <- ifelse(bike.d$Day.Code == 3 | bike.d$Day.Code == 4 , 1 , 0) 

Пример:

bike.d<- data.frame(Day = rep(weekdays(Sys.Date()+1:7) , each = 2) , Day.Code = rep(1:7 , each = 2)) 
bike.d$Weekend <- ifelse(bike.d$Day.Code == 3 | bike.d$Day.Code == 4 , 1 , 0) 
bike.d 
#  Day Day.Code Weekend 
#1 Thursday  1  0 
#2 Thursday  1  0 
#3  Friday  2  0 
#4  Friday  2  0 
#5 Saturday  3  1 
#6 Saturday  3  1 
#7  Sunday  4  1 
#8  Sunday  4  1 
#9  Monday  5  0 
#10 Monday  5  0 
#11 Tuesday  6  0 
#12 Tuesday  6  0 
#13 Wednesday  7  0 
#14 Wednesday  7  0 
+0

Благодарим вас за ввод, но я продолжаю получать следующую ошибку: Ошибка в '$ <-. Data.frame' (' * tmp * '," Weekend ", value = logical (0)): Замена имеет 0 строки, данные имеют 74847 – user2339597

+0

@ user2339597 Это не означает многого без команды, которую вы запускали, и структуры ваших данных. Обновите свой вопрос, выполнив эту команду в R 'dput (head (bike.d, n = 30))'. –

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