2016-07-25 9 views
-1

Eine Untergruppe von meiner Datenrahmen istKonvertieren positive Zahlenwerte in einen Faktor 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 

Ich brauche alle Werte konvertieren> 0 in eine numerische Variable von 1. So erreichen Ich möchte:

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

Ich würde dann diese als Dummy-Variablen mit der factor() -Funktion in einer weiteren Analyse verwenden.

Bitte bedenken Sie, dass diese Daten als Teil einer größeren Datenmenge von 1980 bis 2012 zum Beispiel im Bereich existieren:

$X1980LLTper, $X1981LLTper, ... $X2012LLTper 

sowie eine Reihe von einzelnen Variablen (Einkommen, Alter, Geschlecht, usw.)

Ich wäre dankbar, wenn irgendwelche Lösungen einen prägnanten Code enthalten würden, der es mir erlauben würde, die Matrix der erzeugten Dummy-Variablen an meinen größeren Datensatz anzuhängen.

+0

@Sotos verwenden, ich habe diese: ‚Fehler in' [<- data.frame' (. '* tmp *', IntensityIndex [, -1]> 0, Wert = 1): nicht unterstützter Matrixindex im Ersatz ' – Recon93

+0

Sie können auch versuchen' IntensityIndex [, - 1] <- ifelse (IntensityIndex [, - 1]> 0, 1, 0) ' – Marcel10

+0

@MarcelG Danke Kumpel, hat den Trick gemacht! :) Prost – Recon93

Antwort

0

Ich habe bereits die Frage in den Kommentaren beantwortet, aber können Sie diese Antwort akzeptieren, damit andere wissen, dass es eine Antwort gibt? Einige Leute in diesem Meta post schlagen vor, Ihre Lösung im Kommentar als Antwort zu posten.

Sie können dies tun, indem sie: IntensityIndex[,-1] <- ifelse(IntensityIndex[,-1] > 0, 1, 0)

Oder können Sie den Vorschlag von @Sotos IntensityIndex[,-1][IntensityIndex[,-1] > 0] <- 1

+0

Sie können 'df1' in den tatsächlichen' IntensityIndex' Namen ändern Wenn Sie möchten, dass – Sotos

+0

@Sots vereinbart werden, wird die Antwort konsistenter. – Marcel10