我正在尝试对这个数据集进行盒式绘图,它是许多非常相似的人中唯一一个没有箱图的人。我设置了数据a <- as.numeric
。我得到的错误消息是:Error in x[!xna] : object of type 'builtin' is not subsettable In addition: Warning messages: 1: In is.na(x) : is.na() applied to non-(list or vector) of type 'builtin' 2: In is.na(x) : is.na() applied to non-(list or vector) of type 'builtin'
。
当我输入
时,数据看起来像这样summary(a)
#> Frontal L45 R45 L22.5
#> 40.0 : 2 0.0 :4 0.0 :9 na : 4
#> 90.0 : 2 15.0 :3 na :3 0.0 : 2
#> 0.0 : 1 na :3 11.5 :1 13.2 : 1
#> 10.0 : 1 1.7 :1 13.4 :1 14.5 : 1
#> 10.2 : 1 15.9 :1 15.0 :1 15.0 : 1
#> 15.0 : 1 16.5 :1 17.3 :1 15.3 : 1
#> (Other):12 (Other):7 (Other):4 (Other):10
#>
#> R22.5
#> 0.0 : 4
#> 90.0 : 2
#> 11.7 : 1
#> 15.0 : 1
#> 16.0 : 1
#> 18.9 : 1
#> (Other):10
并且在表格版本
中是这样的Frontal
15
58.2
3.8
9.2
23.9
0
na
22.1
46.6
5.3
40
10
32
32.5
90
89.2
72.6
40
10.2
90
L45
17
15
8.7
1.7
5
3
na
3.3
16.5
15.9
0
0
na
15
15
3.1
7.4
0
na
0
R45
11.5
23.7
0
0
0
0
na
0
0
25.5
0
0
0
2.4
15
13.4
17.3
na
5.2
na
L22.5
19.9
15.3
0
45.1
0
20.8
na
14.5
24.4
15
na
74.4
29.3
6.8
8.8
na
13.2
na
40
19.5
R22.5
40
90
57.1
11.7
2.9
0
0
na
0
36.9
80.2
15
0
90
30.3
47.7
57.6
18.9
16
24.3
任何疑难解答都将非常感谢。 最好, 利亚
答案 0 :(得分:2)
帮助您将来提出更好的问题。请保证我们阅读上面jogo链接的the article。如果您提供a complete minimal reproducible example来提出问题,我们更有可能帮助您。我们可以使用的东西,用来向您展示如何回答您的问题。
以下是我制作的一些数据,但很可能与您的情况不一样,因为我不得不猜测它的结构,
a = data.frame(Frontal = c(4L, 13L, 7L, 16L, 6L, 1L, 18L, 5L, 11L, 12L, 10L, 2L, 8L,
9L, 17L, 15L, 14L, 10L, 3L, 17L), L45 = c(6L, 3L, 12L, 2L, 10L, 7L, 13L,
9L, 5L, 4L, 1L, 1L, 13L, 3L, 3L, 8L, 11L, 1L, 13L, 1L), R45 = c(2L, 7L,
1L, 1L, 1L, 1L, 10L, 1L, 1L, 8L, 1L, 1L, 1L, 6L, 4L, 3L, 5L, 10L, 9L,
10L), L22.5 = c(7L, 5L, 1L, 12L, 1L, 8L, 16L, 3L, 9L, 4L, 16L, 14L, 10L,
13L, 15L, 16L, 2L, 16L, 11L, 6L), R22.5 = c(10L, 15L, 12L, 2L, 6L, 1L, 1L,
16L, 1L, 9L, 14L, 3L, 1L, 15L, 8L, 11L, 13L, 5L, 4L, 7L))
# install.packages(c("tidyverse"), dependencies = TRUE)
library(tidyverse)
我怀疑您的数据存储为因素,尽管您进行了as.numeric()
调用。使用数据summary()
,
as.factor
的此输出
a %>% mutate_all(as.factor) %>% summary()
#> Frontal L45 R45 L22.5 R22.5
#> 10 : 2 1 :4 1 :9 16 : 4 1 : 4
#> 17 : 2 3 :3 10 :3 1 : 2 15 : 2
#> 1 : 1 13 :3 2 :1 2 : 1 2 : 1
#> 2 : 1 2 :1 3 :1 3 : 1 3 : 1
#> 3 : 1 4 :1 4 :1 4 : 1 4 : 1
#> 4 : 1 5 :1 5 :1 5 : 1 5 : 1
#> (Other):12 (Other):7 (Other):4 (Other):10 (Other):10
你可以将它与我的数据上使用summary()
时的外观(我知道它是数字)进行比较,
a %>% summary()
#> Frontal L45 R45 L22.5 R22.5
#> Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00 Min. : 1.00
#> 1st Qu.: 5.75 1st Qu.: 2.75 1st Qu.: 1.00 1st Qu.: 4.75 1st Qu.: 2.75
#> Median :10.00 Median : 5.50 Median : 2.50 Median : 9.50 Median : 7.50
#> Mean : 9.90 Mean : 6.30 Mean : 4.15 Mean : 9.25 Mean : 7.70
#> 3rd Qu.:14.25 3rd Qu.:10.25 3rd Qu.: 7.25 3rd Qu.:14.25 3rd Qu.:12.25
#> Max. :18.00 Max. :13.00 Max. :10.00 Max. :16.00 Max. :16.00
如果你想让人们一瞥你的数据,你可以做这样的事情,
a %>% as_tibble() %>% print(n = 7)
#> # A tibble: 20 x 5
#> Frontal L45 R45 L22.5 R22.5
#> <int> <int> <int> <int> <int>
#> 1 4 6 2 7 10
#> 2 13 3 7 5 15
#> 3 7 12 1 1 12
#> 4 16 2 1 12 2
#> 5 6 10 1 1 6
#> 6 1 7 1 8 1
#> 7 18 13 10 16 1
#> # ... with 13 more rows
上述输出还显示了如何存储a
中的各个向量。这里它们都存储为整数int
。您还可以使用tidyverse软件包中的实际glimpse()
a %>% as_tibble() %>% glimpse()
#> Observations: 20
#> Variables: 5
#> $ Frontal <int> 4, 13, 7, 16, 6, 1, 18, 5, 11, 12, ...
#> $ L45 <int> 6, 3, 12, 2, 10, 7, 13, 9, 5, 4, 1, ...
#> $ R45 <int> 2, 7, 1, 1, 1, 1, 10, 1, 1, 8, 1, 1...
#> $ L22.5 <int> 7, 5, 1, 12, 1, 8, 16, 3, 9, 4, 16, ...
#> $ R22.5 <int> 10, 15, 12, 2, 6, 1, 1, 16, 1, 9, ...
来自base-r的str()
实际上可能更好,
str(a)
#> 'data.frame': 20 obs. of 5 variables:
#> $ Frontal: int 4 13 7 16 6 1 18 5 11 12 ...
#> $ L45 : int 6 3 12 2 10 7 13 9 5 4 ...
#> $ R45 : int 2 7 1 1 1 1 10 1 1 8 ...
#> $ L22.5 : int 7 5 1 12 1 8 16 3 9 4 ...
#> $ R22.5 : int 10 15 12 2 6 1 1 16 1 9 ...
所有三个输出选项都显示数据(我生成)中的向量是整数int
,即它们是数字。您应该调查数据结构并确保其数字。如果没有,您可以使用a %>% mutate_all(as.numeric)
到达那里。
够了。这是a
上的一个框图选项,但我不知道这是否是您要找的,
a %>% gather() %>% ggplot(aes(key, value)) + geom_boxplot()
希望详细说明gather()
调用以显示其工作原理,
a %>% gather(key = "Type: L, R, or Frontal", value = "int value") %>%
ggplot(aes(`Type: L, R, or Frontal`, `int value`)) +
geom_boxplot(fill = "white", colour = "#3366FF") +
geom_jitter(width = .2, colour = "#3366FF", alpha = 0.4)