2017-04-12 96 views
0

中某一列的摘要我有一個df數據幀。我無法獲得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 

我添加了一個新的列,並把它們全部0的值,通過使用下面的方法之一:

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

,然後使用我的算法,我改變每個DF $集羣值你可以看到我用來改變DF $集羣價值的方法:

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

在我得到了我期待的結果結束,但我已經面臨着一個新的問題。當我試圖得到我的結果摘要時,我得到了奇怪的結果。

> 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  

我看了就知道我怎麼也得讓一列的新列或更改的價值,因爲現在我得到這樣的:

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

看起來你的'cluster'列是'factor',所以'summary'報告每個級別的數量。 – www

+0

@ycw有時候我有一個錯誤,它告訴我,集羣列是因素,但是,這不是因素! – asikhalaban

回答

1

summary函數的輸出清晰顯示cluster列是factor。下面是一個簡單的例子。

# 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 

請注意,在Col_fsummary功能只報告每個級別的人數。

要將factor轉換爲numeric,您可能需要先將列轉換爲character,然後再轉換爲數字。這是一個例子。

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

注意Col_fn相同Col_n

# 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 

如果您直接將factor轉換爲數字,它將基於級別。這是一個例子。

# 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 

注意col_ff是整數,從14,因爲那些是水平的數字。

+0

謝謝,它確實有效。我只是將因子列轉換爲數字。 – asikhalaban