2016-07-25 101 views
-1

我的數據框的子集轉換正數值爲因子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