2017-02-25 51 views
-1

Hallo我試圖找到在stackoverflow上的答案,但我失敗了。有很多類似的問題,但我的觀點不同。如何將獨特的行值轉換爲列名(在NA地方賦予0值)

這裏是我的問題: - 我想利用獨特的價值從一列(IAB_category),並創建數據幀列名形成IAB_category

> df 
     userID IAB_category suma 
1: 0004837def   art 3 
2: 0004837def   aut 5 
3: 0004837def   bus 5 
4: 0004837def   fin 4 
5: 0004837def   hob 1       

405479: ffffa375db   tra 31 
405480: ffffa942e3   bus 6 
405481: ffffa942e3   fin 12 
405482: ffffa942e3   new 2 

基本上我想要得到這個數據幀所有用戶(並把SUMA的情況下,當用戶x具有一定的價值或0時,用戶x不 有和值(「茶」將是0和「新」將是0以及)。

userID  art aut bus fin hob tra new 
0004837def  3 3 5 4 1 0 0 

回答

1

這聽起來像你想要將你的數據從長格式傳播到寬格式。最簡單的方法是使用tidyr軟件包:

library(tidyr) 

# Convert the dataset to wide 
newdf <- spread(df, key=IAB_category, value=suma) 
# Replace missing with 0 
newdf <- 
    lapply(newdf, function(x) { 
        x[is.na(x)] <- 0 
        x 
       })