group by 保留哪一条数据_使用R语言绘制一维数据统计图总结

d0365a87ce95b5deb3a0048f256377ba.png

加载数据 绘制茎叶图 绘制直方图 绘制概率密度曲线 绘制小提琴图 绘制箱线图 绘制小提琴图箱线图 集中趋势统计 分散程度 apply的使用

加载数据

模拟数据下载

library(tidyverse)
cjb <- read.csv("/home/wy/Downloads/cjb.csv",
                header = TRUE,
                stringsAsFactors = FALSE,
                fileEncoding = "UTF-8")

绘制茎叶图

cjb %>% 
  filter(bj == '1101') %>%
  select(sx) %>%
  as_vector() %>%
  stem()
5 | 5799
  6 | 0014
  6 | 55789
  7 | 000011122334444
  7 | 788899
  8 | 111222334444
  8 | 589
  9 | 224

绘制直方图

sx_hist_result = hist(cjb$sx,plot = FALSE)
typeof(sx_hist_result)
names(sx_hist_result)
# 使用ggplot绘制与hist相同的直方图
ggplot(data = cjb,mapping = aes(sx))+
  geom_histogram(
    breaks = sx_hist_result$breaks,
    color = "darkgray",
    fill = "white"
  )+
  stat_bin(
    breaks = sx_hist_result$breaks,
    geom = "text",
    aes(label = ..count..)
  )+
  coord_flip()

0255984ba7cfd102220104d04f01fa85.png

绘制概率密度曲线

ggplot(data = cjb,mapping = aes(sx))+
  geom_histogram(
    breaks = sx_hist_result$breaks,
    color = "darkgray",
    fill = "white",
    aes(y = ..density.. )
  )+
  geom_density(color = 'blue')

e4516bc207ab6281e6912cade3db15f2.png

绘制小提琴图

ggplot(cjb,aes(x=factor(0),y=sx))+
  geom_violin(fill="orange",alpha=0.2)+
  coord_flip()

6483d8b832493dcebfec1aed63032dad.png

绘制箱线图

c9dc84c40807ae3f26d2846b1fca0765.png
cjb %>%
  ggplot(aes(x=factor(0),y=sx))+
  geom_boxplot(
    width=0.25,
    fill = "#E69F00",
    outlier.colour = "red",
    outlier.shape = 1,
    outlier.size = .2
  )+
  geom_rug(position = "jitter",
           size=0.1,
           sides = "l")+
  coord_flip()

a49d37823a6431e2b8c9084b00bf2085.png
boxplot.stats(cjb$sx)
# $stats 下边界 一分位距 中位数 三分位距 上边界
# [1]  60  81  89  95 100
# $n 数据记录数
# [1] 775
# $conf
# [1] 88.20543 89.79457
# $out 异常点
# [1] 55 59 57 59 58 51 56 55 59 26 58 46  0 59 59

绘制小提琴图+箱线图

cjb %>%
  ggplot(aes(x=factor(0),y=sx)) +
  geom_violin(fill="#56B4E9",width=0.75) +
  geom_boxplot(
    width=0.25,
    fill = "#E69F00",
    outlier.colour = "red",
    outlier.shape = 1,
    outlier.size = 2
  )+
  geom_rug(
    position = "jitter",
    size=0.1,
    sides = "l"
  )+
  coord_flip()

b7f8a97615411d43066967c109793ae4.png

集中趋势统计

cjb %>%
  group_by(wlfk) %>% # 按文理分科分组统计
  summarise(
    count = n(), # 各组人数
    sx_median = median(sx), # 中位数
    sx_mean = mean(sx) # 均值
  )
# A tibble: 2 x 4
# wlfk  count sx_median sx_mean
# <chr> <int>     <dbl>   <dbl>
# 1 文科    394        84    82.7
# 2 理科    381        93    89.5

分散程度

cjb %>%
  group_by(wlfk) %>% # 按文理分科分组统计
  summarise(
    sx_max = max(sx), # 最大值
    sx_min = min(sx), # 最小值
    sx_range = max(sx) - min(sx) # 极差
  )

# A tibble: 2 x 4
# wlfk  sx_max sx_min sx_range
# <chr>  <int>  <int>    <int>
# 1 文科     100     26       74
# 2 理科     100      0      100
cjb %>%
  group_by(wlfk) %>% # 按文理分科分组统计
  summarise(
    sx_O3 = quantile(sx,3/4), # 第三分位数
    sx_min = quantile(sx,1/4), # 第一分位数
    sx_iqr = IQR(sx) # 四分位距
  )
# A tibble: 2 x 4
# wlfk  sx_O3 sx_min sx_iqr
# <chr> <dbl>  <dbl>  <dbl>
# 1 文科     92     75     17
# 2 理科     96     86     10

apply的使用

round(apply(cjb[,4:12], 2, function(x){
  c(
    mean = mean(x),
    median = median(x),
    range = diff(range(x)),
    IQR = IQR(x)
  )
}))
# yw  sx wy  zz  ls  dl  wl  hx  sw
# mean   87  86 87  92  89  93  81  92  86
# median 88  89 88  93  90  94  83  94  88
# range  96 100 99 100 100 100 100 100 100
# IQR     6  14  8   5  10   6  17  10  12
R语言​www.bioinfo.online
06b2fa93ab625f2d9561269102b1b4c3.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值