2016-10-20 62 views
0

我對R非常新,我試圖將數據字典定義映射到一組數據以使可讀性更高的文本。在R中映射數據和缺失值

例如,基於目前在Kaggle上的艾姆斯愛荷華州住房數據集中的數據字典,我試圖繪製房屋的分區圖。

mapping <- list(
    'A'='Agriculture', 
    'C (all)'='Commercial', 
    'FV'='Floating Village Residential', 
    'I'='Industrial', 
    'RH'='Residential High Density', 
    'RL'='Residential Low Density', 
    'RP'='Residential Low Density Park', 
    'RM'='Residential Medium Density' 
) 

housingData$MSZoning <- as.factor(as.character(mapping[origData$MSZoning])) 

但是,原始數據集不包含所有這些數據點的值。

> table(origData$MSZoning) 

C (all)  FV  RH  RL  RM 
    10  65  16 1151  218 

用我的代碼映射後,鍵值對不會對齊。 (例如,農業被映射爲「C」)。我相信源數據中的空值會拋棄我的映射。

> table(housingData$MSZoning, origData$MSZoning) 

           C (all) FV RH RL RM 
    Agriculture      10 0 0 0 0 
    Commercial       0 65 0 0 0 
    Floating Village Residential  0 0 16 0 0 
    Industrial       0 0 0 1151 0 
    Residential High Density   0 0 0 0 218 

有人可以幫助一個更合適的方法來確保這些鍵和值適當對齊嗎?

謝謝!

+0

哇,4.5年,這是你的第一個問題?這令人印象深刻......認真地說,也許'recode'會爲你工作?另外,雖然它確實有一些優點,但是有一個特定的原因是你使用了'factor's? – r2evans

+0

謝謝,r2evans。我可以在你的幫助下回答這個問題。關於這些因素,我複製了「優秀,優秀,一般,差」系列的代碼。我同意這個實施可能不是最恰當的使用因素。 –

+0

(除了回答你自己的問題,你應該「接受」它,除非你正在等待別人提供答案。) – r2evans

回答

0

感謝您的快速響應。我很感激!

使用recode命令,我能夠使此代碼正常工作。

library(car) 

housingData$MSZoning <- recode(housingData$MSZoning, 
    "'A'='Agriculture'; 
    'C (all)'='Commercial'; 
    'FV'='Floating Village Residential'; 
    'I'='Industrial'; 
    'RH'='Residential High Density'; 
    'RL'='Residential Low Density'; 
    'RP'='Residential Low Density Park'; 
    'RM'='Residential Medium Density'" 
) 

現在,運行表格交叉表,我看到了正確的值映射。

> table (housingData$MSZoning, origData$MSZoning) 

           C (all) FV RH RL RM 
    Commercial      10 0 0 0 0 
    Floating Village Residential  0 65 0 0 0 
    Residential High Density   0 0 16 0 0 
    Residential Low Density   0 0 0 1151 0 
    Residential Medium Density   0 0 0 0 218 

再次感謝!