使用 R 语言进行数据处理(二)

使用 R 语言进行数据处理(二)

继续上次课的内容。上次课我们学习了filterarrangeselectmutate 四个函数,最后我们还使用了 2018 年的全国人大代表数据进行练习。本次课程中我们将学习 summarisecount 函数以及这些函数(包括前面介绍的)的搭配使用。

再进入进入的课程前我们先通过一个案例回顾下上节课学习的内容。有一个小伙伴提了个问题:他有 Q2 到 Q8 共 7 个变量。每个变量取值 1, 2, 3, 4。现在想把所有变量的 1 转成 100, 2 转成 80, 3 转成 60, 4 转成 0。显然这个问题可以使用 mutate_all 解决。

不过我们还需要引入两个函数,if_else 和 case_when。我举两个例子大家就明白它俩的功能了:

1
2
3
4
5
6
7
8
9
10
library(tidyverse)
tibble(x = 1:10) %>%
mutate(y = if_else(x >= 5, 1, 0))

tibble(x = 1:10) %>%
mutate(y = case_when(
x <= 3 ~ 1,
between(x, 4, 6) ~ 2,
T ~ 3
))

为了应用 mutate_all 函数,我们先定义一个替换函数:

1
2
3
4
5
6
7
8
replace_fun <- function(x){
case_when(
x == 1 ~ 100,
x == 2 ~ 80,
x == 3 ~ 60,
T ~ 0
)
}

然后我们造个类似的数据框然后应用 mutate_all 和上面定义的函数:

1
2
3
4
5
6
7
8
9
10
tibble(
Q2 = sample(1:4, 4),
Q3 = sample(1:4, 4),
Q4 = sample(1:4, 4),
Q5 = sample(1:4, 4),
Q6 = sample(1:4, 4),
Q7 = sample(1:4, 4),
Q8 = sample(1:4, 4)
) %>%
mutate_all(replace_fun)

或者使用 mutate 和 across 函数的组合:

1
2
3
4
5
6
7
8
9
10
tibble(
Q2 = sample(1:4, 4),
Q3 = sample(1:4, 4),
Q4 = sample(1:4, 4),
Q5 = sample(1:4, 4),
Q6 = sample(1:4, 4),
Q7 = sample(1:4, 4),
Q8 = sample(1:4, 4)
) %>%
mutate(across(everything(), ~replace_fun(.x)))

是不是很方便。下面我们开始今天的学习吧!

分组聚合

和上节课一样,我们继续使用 flights 数据集演示:

1
2
nycflights13::flights -> flights
flights

我们可以把所有的观测值看做一组,然后计算 dep_delay 变量的均值:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。

mutate 和 filter 函数在分组中的应用

例如筛选出来每天延误最严重的 10 次航班:

1
2
3
flights %>% 
group_by(year, month, day) %>%
dplyr::filter(rank(desc(arr_delay)) < 10)

筛选出平均每天至少一趟航班的目的地,也就是一年中的航班数量大于 365 的:

1
2
3
flights %>% 
group_by(dest) %>%
dplyr::filter(n() > 365)

因此在 group_by() 之后记得及时 ungroup,否则后面的运行仍然是分组进行的。

案例时间:使用全球新冠疫情数据进行练习并解决下面的问题:

中间的部分去哪了?

完整的讲义材料可以在加入我的知识星球(线上培训班)后从知识星球下载附件获取~
要了解如何加入,可以阅读关于界面或者添加我的微信咨询。
  1. 筛选出来美国的数据;
  2. 筛选出来数据集中最后一天的数据;
  3. 计算每天的全球总确诊人数、总治愈人数和总病死人数;
  4. 筛选出来截止最后一天确诊人数最多的 10 个国家的数据并绘图展示;
  5. 筛选出来每天确诊人数最多的 10 个国家;
  6. 将处理后的数据导出为 xlsx 格式,csv 格式 和 rds 格式;
  7. 计算每个月各个国家的确诊人数。
  8. 大家可以试试自己再提一些新的问题。

我提供了一份参考答案,见附件中的 answers.R 文件。

知识星球附件链接:https://t.zsxq.com/Q3FAYNB

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×