2017-10-14 3 views
1

J'ai une trame de données comme:Pourquoi dcast autour de mes numéros float?

> head(df) 
    nome Class_Name area_class  date 
1 Arataca agropecuaria 25.7751 1973-07-26 
2 Arataca   agua  0.2918 1973-07-26 
3 Arataca  bosque  0.0207 1973-07-26 
4 Arataca  bosque  3.9335 1973-07-26 
5 Arataca   mata 69.9513 1973-07-26 
6 Arataca solo exposto  0.0276 1973-07-26 

Quand je converti avec dcast fonction de la colonne de valeur ne garder que le numéro de float:

dcast(df, nome+date~Class_Name, value.var = "area_class") 
      nome  date agropecuaria agua bosque mata solo exposto 
1    Arataca 1973-07-26   1 1  2 1   1 
2   Buerarema 1973-07-26   1 0  2 1   1 
3    Camacan 1973-07-26   1 0  1 1   0 
4    Camamu 1973-07-26   1 1  2 1   1 
5   Igrapiúna 1973-07-26   1 1  2 1   1 
6    Ilhéus 1973-07-26   1 1  2 1   1 
7    Itabuna 1973-07-26   1 0  2 1   1 
8    Itacaré 1973-07-26   1 1  2 1   1 
9    Ituberá 1973-07-26   1 1  2 1   1 
10    Maraú 1973-07-26   1 1  2 1   1 
11  Nilo Peçanha 1973-07-26   1 0  2 1   0 
12 São José da Vitória 1973-07-26   1 1  2 1   0 
13     Una 1973-07-26   1 1  2 1   1 
14    Uruçuca 1973-07-26   1 1  2 1   1 

Pourquoi « area_class » qui est une classe numérique ne garder comme numéro de flotteur quand je l'ai converti?

+0

Are u obtenir les 'length' en raison des doublons? – akrun

+0

Il existe des doublons. J'ai résolu avec la fonction d'agrégat. Thks – dogosousa

+0

Vous pouvez utiliser 'dcast (df, nome + date ~ nom_classe, valeur.var =" classe_zone ", signifient)' – akrun

Répondre

3

La sortie dans le poste OP pourrait être à cause des lignes en double qui rend la dcastfun.aggregate pour faire le length comme l'option par défaut. Afinde pour éviter cela, soit créer une colonne de séquence ou l'agrégation des value.var (dépend de l'exigence)

dcast(df, nome+date~Class_Name, value.var = "area_class", fun.aggregate = mean)