楼主: polyphagia
601 0

[学习分享] R语言教程:Tidyverse数据清洗常用操作 [推广有奖]

  • 2关注
  • 0粉丝

已卖:251份资源

博士生

10%

还不是VIP/贵宾

-

威望
0
论坛币
1413 个
通用积分
208.6144
学术水平
6 点
热心指数
6 点
信用等级
6 点
经验
14260 点
帖子
59
精华
0
在线时间
318 小时
注册时间
2020-12-12
最后登录
2025-2-23

楼主
polyphagia 学生认证  发表于 2024-8-15 14:09:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Tidyverse包是R语言中强大的数据处理包,管道式的编程模式让代码优雅整洁,建议学习R语言的朋友及早接触Tidyverse包,可大大提高编程效率。


操作代码:

# 清空环境(此步骤为个人习惯,清空当前R环境中的对象,避免混淆)

  1. rm(list = ls())
复制代码

# 设置工作路径(将此处路径更换为自己的工作文件夹路径,建议将需要导入的数据直接放入工作文件夹,可省略后续添加工作路径的步骤)

  1. setwd("E:/Downloads/OneDrive/ProPhet/Codes/RCode/DataClean")
复制代码
# 加载包(下述代码在包已安装时直接加载包,在包未安装时将自动下载安装包,安装成功后再次运行即可加载包)。

## 加载导入Stata(.dta)格式数据的包haven

  1. if (! require("haven")) install.packages("haven")
复制代码
## 加载数据处理的包Tidyverse

  1. if (! require("Tidyverse")) install.packages("Tidyverse")
复制代码
# 导入数据

## 导入数据

  1. dm<-read_dta("demographic_background.dta") #### 人口学特征
  2. hlt<-read_dta("health_status_and_functioning.dta") #### 健康情况
  3. bm<-read_dta("biomarkers.dta") #### 体检数据
  4. bld<-read_dta("Blood_20140429.dta") #### 血检指标
复制代码
# 数据处理:Tidyverse包

## 筛选变量

  1. ### 人口学特征
  2. colnames(dm) #### 查看数据集变量名
  3. dmslc<-dm %>%
  4.   #### 生成新变量
  5.   mutate(age=2011-ba002_1,
  6.          gender=rgender,
  7.          education=ifelse(bd001<4,"Illiterate",
  8.                     ifelse(bd001==4,"Elementary school",
  9.                      ifelse(bd001==5,"Middle school","High school and above"))),
  10.          mariage=ifelse(be001<3,"married",
  11.                        ifelse(be001==6,"Never married","Others"))) %>%
  12.   #### 筛选变量
  13.   select(ID,age,gender,education,mariage)

  14. ### 健康情况
  15. colnames(hlt)  #### 查看数据集变量名
  16. hltslc<-hlt %>%
  17.   #### 生成新变量
  18.   mutate(hyper=ifelse(da007_1_==1,1,0),
  19.          dm=da007_3_,
  20.          sleep=ifelse(da049<5,1,ifelse(da049<=7,2,3))) %>%
  21.   #### 筛选变量
  22.   select(ID,hyper,dm,sleep)

  23. ### 体检数据
  24. colnames(bm) #### 查看数据集变量名
  25. bmslc<-bm %>%
  26.   #### 生成新数据集
  27.   mutate(bmi=ql002/(qi002/100)^2,
  28.          waist=qm002) %>%
  29.   #### 筛选变量         
  30.   select(ID,bmi,waist)

  31. ### 血检数据
  32. colnames(bld) #### 查看数据集变量名
  33. bldslc<-bld %>%
  34.   #### 生成新变量
  35.   mutate(BUN=newbun,
  36.          GLU=newglu,
  37.          CREA=newcrea,
  38.          CHO=newcho,
  39.          TG=newtg,
  40.          HDLC=newhdl,
  41.          LDLC=newldl,
  42.          CRP=newcrp,
  43.          UA=newua) %>%
  44.   #### 筛选变量
  45.   select(ID,BUN,GLU,CREA,CHO,TG,HDLC,LDLC,CRP,UA)
复制代码
## 数据合并、变量赋值、删除缺失值

  1. merge.data<-dmslc %>%
  2.   #### 数据合并
  3.   inner_join(hltslc,by="ID") %>% #### inner_join为内连接,仅对两数据集共有样本进行匹配
  4.   left_join(bmslc,by="ID") %>% #### left_join为左连接,保留主数据集全部样本
  5.   full_join(bldslc,by="ID") %>% #### right_join为右链接,保留匹配数据集全部样本

  6.   #### 变量赋值:
  7.   mutate(gender=factor(gender,levels = c(1,2),labels = c("Male","Female")),
  8.          education=factor(education,
  9.                           levels = c("Illiterate","Elementary school",
  10.                                      "Middle school","High school and above")),
  11.          mariage=factor(mariage,levels = c("married","Never married","Others")),
  12.          dm=factor(dm,levels = c(1,2),labels = c("Yes","No")),
  13.          sleep=factor(sleep,levels = c(1,2,3),labels = c("<5h","5-7h",">7h"))) %>% #### 删除缺失值
  14.   
  15.   #### 删除缺失值
  16.   drop_na() %>%
  17.   
  18.   ### 转换为data.frame
  19.   as.data.frame()
复制代码
# 导出数据

## 导出为Excel(.cav)数据

  1. write.csv(merge.data,"DataClean.csv",fileEncoding = "GB18030")
复制代码





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言教程 vers tid ERS Ver

已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 鼓励积极发帖讨论
cheetahfly + 30 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

Free of the shackles

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-23 05:09