2016-07-25 3 views
-1

Подмножество моего dataframe являетсяПреобразования положительных числовых значений в факторе R

> IntensityIndex 
    Individual X1980LLTper X1981LLTper X1982LLTper 
     1  4789.337905 15..099139 
    1201  32.470518 0.000000 27.880136 
    2231   0.000000 0.000000 0.000000 
    3331  20.200198 964.691700 4.367191 
    8545  40.367227 11.844057 2.227061 
    10031  10.425561 68.817743 29.815259 
    13543  65.883538 364.601077 16.630508 
    15843   7.161902 0.000000 1909.549849 
    23349  18704.452730 0.000000 0.000000 
    24901   3.347454 0.000000 72.299520 
    25901  822.430973 414.693913 3265.319947 
    50439  15.058856 11.638729 0.000000 

Мне нужно преобразовать все значения> 0 в числовой переменную 1. Таким образом, я хочу добиться:

Individual X1980LLTper X1981LLTper X1982LLTper 
     1  1   1   1 
    1201  1  0.000000   1 
    2231 0.000000 0.000000 0.000000 
    etc. 

Я бы использовал их в качестве фиктивных переменных с функцией factor() в дальнейшем анализе.

Пожалуйста, имейте в виду, что существует эти данные, как часть большего набора данных, начиная с 1980 до 2012 года, например:

$X1980LLTper, $X1981LLTper, ... $X2012LLTper 

, а также ряд отдельных переменных (доход, возраст, пол и т.д.)

Я был бы признателен, если какие-либо решения будут содержать сжатый код, который позволил бы мне добавить матрицу сгенерированных фиктивных переменных к моему более крупному набору данных.

+0

@Sotos, я получил это: «Ошибка в' [<- data.frame' (. '* tmp *', IntensityIndex [, -1]> 0, value = 1): Неподдерживаемый матричный индекс взамен ' – Recon93

+0

вы также можете попробовать 'IntensityIndex [, - 1] <- ifelse (IntensityIndex [, - 1]> 0, 1, 0) ' – Marcel10

+0

@MarcelG Спасибо, парень, сделал трюк! :) Приветствия – Recon93

ответ

0

Я уже ответил на вопрос в комментариях, но вы можете принять этот ответ, чтобы другие знали, что есть ответ? Некоторые люди в этом Meta post предлагают опубликовать ваше решение в комментарии в качестве ответа.

Вы можете сделать это: IntensityIndex[,-1] <- ifelse(IntensityIndex[,-1] > 0, 1, 0)

Или вы можете использовать предложение @Sotos IntensityIndex[,-1][IntensityIndex[,-1] > 0] <- 1

+0

Вы можете изменить 'df1' на фактическое имя' IntensityIndex'. Если вы хотите, чтобы – Sotos

+0

@Sotos согласился, это делает ответ более последовательным. – Marcel10

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