R 使用geom_箱线图产生的结果与基本箱线图()不同
我正在使用gapminder数据集在数据框架上实践一些基本数据分析。 我想创建一个只有阿根廷和新西兰的数据子集,以便比较它们的值R 使用geom_箱线图产生的结果与基本箱线图()不同,r,R,我正在使用gapminder数据集在数据框架上实践一些基本数据分析。 我想创建一个只有阿根廷和新西兰的数据子集,以便比较它们的值 install.packages("gapminder") library(gapminder) data("gapminder") > gapminder # A tibble: 1,704 x 6 country continent year lifeExp pop gdpPerca
install.packages("gapminder")
library(gapminder)
data("gapminder")
> gapminder
# A tibble: 1,704 x 6
country continent year lifeExp pop gdpPercap
<fct> <fct> <int> <dbl> <int> <dbl>
1 Afghanistan Asia 1952 28.8 8425333 779.
2 Afghanistan Asia 1957 30.3 9240934 821.
3 Afghanistan Asia 1962 32.0 10267083 853.
4 Afghanistan Asia 1967 34.0 11537966 836.
5 Afghanistan Asia 1972 36.1 13079460 740.
6 Afghanistan Asia 1977 38.4 14880372 786.
7 Afghanistan Asia 1982 39.9 12881816 978.
8 Afghanistan Asia 1987 40.8 13867957 852.
9 Afghanistan Asia 1992 41.7 16317921 649.
10 Afghanistan Asia 1997 41.8 22227415 635.
# ... with 1,694 more rows
这就是我想要的,但是x轴也考虑了我没有选择的所有其他国家。很明显,他们的数据是空的,但这使绘图无法读取
相反,如果我使用相同的数据和ggplot上的所有内容,那么它可以完美地工作:
ggplot(data = df, mapping = aes(x=country, y=lifeExp)) + geom_boxplot()
在定义子集时,我是否有什么错误?使用boxplot()给我的印象是,子集保留了所有内容,但却为我不想为NULL的内容添加了值。从问题中发布的代码开始
library(gapminder)
data("gapminder")
df <- subset(gapminder, country =="Argentina" | country == "New Zealand")
boxplot(lifeExp ~ country, df)
国家系数有142个等级。解决办法是降低额外的级别
df2 <- df
df2$country <- droplevels(df2$country)
boxplot(lifeExp ~ country, df2)
df2如果国家
是一个因素,其水平在分组后仍将存在。但只有标高,没有对应的行,因此,绘图显示空间,但不打印数据。试试看,df$country工作起来很有魅力,谢谢!
library(gapminder)
data("gapminder")
df <- subset(gapminder, country =="Argentina" | country == "New Zealand")
boxplot(lifeExp ~ country, df)
str(df)
#tibble [24 × 6] (S3: tbl_df/tbl/data.frame)
# $ country : Factor w/ 142 levels "Afghanistan",..: 5 5 5 5 5 5 5 5 5 5 ...
# $ continent: Factor w/ 5 levels "Africa","Americas",..: 2 2 2 2 2 2 2 2 2 2 ...
# $ year : int [1:24] 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...
# $ lifeExp : num [1:24] 62.5 64.4 65.1 65.6 67.1 ...
# $ pop : int [1:24] 17876956 19610538 21283783 22934225 24779799 26983828 29341374 31620918 33958947 36203463 ...
# $ gdpPercap: num [1:24] 5911 6857 7133 8053 9443 ...
df2 <- df
df2$country <- droplevels(df2$country)
boxplot(lifeExp ~ country, df2)