2017-04-12 2 views
0

Ich habe einen Datenrahmen, der df ist.Ich bin nicht in der Lage, Zusammenfassung für eine der Spalten in r

id  time internet lat lng 
103 1 1385913600 14.057844 1 0 
247 2 1385913600 14.062213 2 0 
391 3 1385913600 14.066863 3 0 
535 4 1385913600 14.045190 4 0 
679 5 1385913600 12.772210 5 0 
823 10 1385913600 8.101804 10 0 

Ich habe eine neue Spalte und stellen Werte aller von ihnen 0 durch eine der folgenden Methoden verwenden:

df["cluster"] <- 0 
df$cluster <- 0 

Und dann von meinem Algorithmus ich Wert jedes df $ Cluster verändert die Sie können die Methode sehen ich verwenden Wert von df $ Cluster zu ändern: ich das Ergebnis, das ich bin auf der Suche bekam

clusternumber <- clusternumber + 1 
df$cluster[df$id == minid] <- clusternumber 

Am Ende, aber ich habe mit einem neuen Problem konfrontiert. Wenn ich versuche, eine Zusammenfassung meines Ergebnisses zu erhalten, bekomme ich seltsame Ergebnisse.

> summary(df) 
     id   internet   lat    lng   cluster  
Min. : 1 Min. : 0.00 Min. : 1.00 Min. : 0.00 1  : 121 
1st Qu.: 2500 1st Qu.: 15.57 1st Qu.: 25.25 1st Qu.: 25.00 2  : 121 
Median : 5000 Median : 36.09 Median : 51.00 Median : 49.50 3  : 121 
Mean : 5000 Mean : 75.73 Mean : 50.50 Mean : 49.51 4  : 121 
3rd Qu.: 7501 3rd Qu.: 78.88 3rd Qu.: 75.75 3rd Qu.: 75.00 9  : 121 
Max. :10000 Max. :6663.23 Max. :100.00 Max. :100.00 15  : 121 
                    (Other):9272  

Ich bin auf der Suche wissen, wie muss ich eine neue Spalte oder Änderungswert einer Spalte machen, weil jetzt das ich erhalte:

> summary(df$cluster) 
     1  2  3  4  9  15  16  17  34  52  85  147  8  6  7  36 
    121  121 other(2727) 
+1

Es scheint, als wäre Ihre 'cluster' Spalte' factor', daher gibt 'summary' die Nummer jedes Levels an. – www

+0

@ycw genau manchmal habe ich einen Fehler und es zeigte mir, dass Cluster-Spalte Faktor ist, aber es ist kein Faktor! – asikhalaban

Antwort

1

Die Ausgabe Ihrer summary Funktion deutlich zeigt, dass die cluster Spalte factor ist. Unten ist ein einfaches Beispiel.

# Create an example data frame 
dat <- data.frame(Col_f = c("1.1", "1.1", "2.1", "2.1", "3.1", "3.1", 
          "4.1", "4.1", "4.1"), 
        Col_n = c(1.1, 1.1, 2.1, 2.1, 3.1, 3.1, 4.1, 4.1, 4.1)) 

# Check the structure of the data frame 
str(dat) 
# 'data.frame': 9 obs. of 2 variables: 
# $ Col_f: Factor w/ 4 levels "1.1","2.1","3.1",..: 1 1 2 2 3 3 4 4 4 
# $ Col_n: num 1.1 1.1 2.1 2.1 3.1 3.1 4.1 4.1 4.1 

# Use summary 
summary(dat) 
# Col_f  Col_n  
# 1.1:2 Min. :1.100 
# 2.1:2 1st Qu.:2.100 
# 3.1:2 Median :3.100 
# 4.1:3 Mean :2.767 
#   3rd Qu.:4.100 
#   Max. :4.100 

Beachten Sie, dass in Col_fsummary Funktion einfach meldet die Anzahl in jeder Ebene.

Um die factor in numeric zu konvertieren, möchten Sie die Spalte zuerst in character konvertieren und dann in numerisch konvertieren. Hier ist ein Beispiel.

# Convert the column of factor to numeric 
dat$Col_fn <- as.numeric(as.character(dat$Col_f)) 

Beachten Sie, dass Col_fn die gleiche wie Col_n ist.

# Call str again 
str(dat) 
# 'data.frame': 9 obs. of 3 variables: 
# $ Col_f : Factor w/ 4 levels "1.1","2.1","3.1",..: 1 1 2 2 3 3 4 4 4 
# $ Col_n : num 1.1 1.1 2.1 2.1 3.1 3.1 4.1 4.1 4.1 
# $ Col_fn: num 1.1 1.1 2.1 2.1 3.1 3.1 4.1 4.1 4.1 

Wenn Sie direkt factor in numerischen konvertieren, wird es auf der Ebene basieren. Hier ist ein Beispiel.

# Convert the column of factor to numeric 
dat$Col_ff <- as.numeric(dat$Col_f) 

# Use str again 
str(dat) 
# 'data.frame': 9 obs. of 4 variables: 
# $ Col_f : Factor w/ 4 levels "1.1","2.1","3.1",..: 1 1 2 2 3 3 4 4 4 
# $ Col_n : num 1.1 1.1 2.1 2.1 3.1 3.1 4.1 4.1 4.1 
# $ Col_fn: num 1.1 1.1 2.1 2.1 3.1 3.1 4.1 4.1 4.1 
# $ Col_ff: num 1 1 2 2 3 3 4 4 4 

Beachten Sie, dass col_ff ganze Zahlen sind 1-4 hin, weil diejenigen, die Level-Nummern waren.

+0

Danke, es hat funktioniert. Ich konvertiere nur die Spalte von Faktor zu numerisch. – asikhalaban

Verwandte Themen