1) 在tidyr包中有一个who数据集并完成以下操作, 2) 用factor函数把method和gender转换成正确的因子类型,如gender应该有两个水平,f,m;method应该有4个水平(rel,sn,sp,ep),尽管其他水平在我们选取的子集中没有出现。 3) 用summary查看who概括信息;iso2字段是标准化国家代码,根据这个字段先汇总出每个国家结核病诊断累计值;再汇总出每个国家不同性别的诊断累计值。(提示:用group_by,summarize函数完成)。
时间: 2024-03-16 08:41:19 浏览: 13
好的,我明白了你的问题。以下是代码实现:
```R
library(tidyr)
# 加载数据集
data(who)
# 将method和gender转换为因子类型
who$method <- factor(who$method, levels = c("rel", "sn", "sp", "ep"))
who$gender <- factor(who$gender, levels = c("f", "m"))
# 查看who数据集的概括信息
summary(who)
# 按照国家和性别分组,并汇总诊断累计值
who_summary <- who %>% group_by(iso2, gender) %>%
summarize(total_cases = sum(cases))
# 按照国家汇总诊断累计值
who_country_summary <- who %>% group_by(iso2) %>%
summarize(total_cases = sum(cases))
```
请注意,上述代码中的 `who_summary` 和 `who_country_summary` 是两个不同的数据框,分别汇总了每个国家不同性别的诊断累计值和每个国家的诊断累计值。
相关问题
1. 在tidyr包中有一个who数据集,是世界卫生组织调查的结核病数据,这是一个不符合整洁数据的数据集,我们要把它变整洁。首先用who查看一下数据是什么样的(提示:>后直接输入who并回车);然后查看who的说明(?who);说明中有关于变量的描述,该数据集共有60列,第5-60列包含了3个变量,“new_”后面的代码标识不同的诊断方法“method of diagnosis”(rel= relapse, sn= negative pulmonary smear, sp= positive pulmonary smear, ep= extra pulmonary),数字前面紧跟的是性别代码(m,f),数字代表年龄分组(0-14,15-24,25-34…55-64,65+)。 1) 假如我们对采用relapse方法检测到的记录感兴趣,选取字段iso2,year,newrel_m014:newrel_f65; 2) 试用gather和separate将它转成整洁的数据集。可以分步做,最后的结果数据集包含6个字段: iso2,year,method=”rel”,gender,agegroup=(”014”…”65”) ,count。 提示:你需要用到的函数有select(),gather(),separate(),mutate(),substr(), length()。 3) agegroup字段能够用parase_number函数析出?为什么?
1) 首先使用who函数查看数据:
```
> who
```
2) 使用?who查看说明,根据说明选取需要的字段:
```
> library(tidyr)
> who_data <- select(who, iso2, year, newrel_m014:newrel_f65)
```
3) 使用gather函数将数据变成长格式:
```
> who_data_long <- gather(who_data, key = "method_age_gender", value = "count", newrel_m014:newrel_f65)
```
4) 使用separate函数将method_age_gender字段分离成三个字段,然后使用mutate函数将agegroup字段析出:
```
> who_data_long <- separate(who_data_long, col = "method_age_gender", into = c("method", "age_gender"), sep = "_")
> who_data_long <- mutate(who_data_long, gender = substr(age_gender, 1, 1))
> who_data_long <- mutate(who_data_long, agegroup = substr(age_gender, 2, length(age_gender)))
```
5) 最后整理数据集,只保留需要的字段:
```
> who_data_final <- select(who_data_long, iso2, year, method, gender, agegroup, count)
```
6) 可以使用parse_number函数将agegroup字段析出,因为agegroup字段中只包含数字,没有其他字符,所以可以直接使用parse_number函数析出。
有一数据字典,按who列分组统计各类型的旅客人数,并做如下对比饼图
好的,您的问题是关于数据字典和对比饼图的制作。
首先,数据字典是一种记录数据元素和数据结构的文档,它可以描述数据的定义、组成、属性、来源、存储方式等信息。在您的问题中,数据字典应该包含至少如下字段:旅客姓名、旅客类型(比如成人、儿童、老人等)、旅客所属机构或公司、旅客到达时间等信息。根据您的要求,需要按照旅客类型(who列)进行分组统计各类型旅客人数,可以使用Excel或其他数据分析工具进行计算。
其次,对比饼图是一种用于展示各类别数据占比的图表,可以直观地反映各类别数据的比例关系。在您的问题中,需要制作按照旅客类型分组的对比饼图,可以按照以下步骤进行:
1. 将分组统计出的各类型旅客人数制作成一个数据表,包括旅客类型和人数两列;
2. 使用Excel或其他数据可视化工具,选中数据表并选择对比饼图类型进行制作;
3. 对饼图进行美化,比如添加标题、调整颜色、添加数据标签等,以使图表更加清晰易懂。
希望我的回答能够帮助您解决问题,如有疑问请随时提出。