我无法获得r中其中一列的摘要

时间:2017-04-12 01:57:43

标签: r dataframe summary

我的数据框是df。

    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 $ cluster的值,你可以看到我用来改变df $ cluster的值的方法:

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 个答案:

答案 0 :(得分: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_f summary功能中,只需报告每个级别的数字。

要将factor转换为numeric,您可能需要先将列转换为character,然后再转换为数字。这是一个例子。

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

请注意Col_fnCol_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的整数,因为它们是级别数。