我无法获得 r 中某一列的摘要
I'm not able to get summary for one of the columns in r
我有一个 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)
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_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 是从 1
到 4
的整数,因为它们是级别数。
我有一个 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)
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_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 是从 1
到 4
的整数,因为它们是级别数。