• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • R语言学习:数据整理

      R语言学习:数据整理

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2021年12月20日
      测试开头

      2021年第51周。


      这一周R语言学习,记录如下。


      01 

      数据整理


      在实际数据科学工作中,原始数据因为各种因素,通常是不符合或者不满足我们分析与建模需求的。此时,我们需要花费较多时间来做数据整理工作。


      数据整理工作,会遇到这些内容:

      1 数据的重塑

      2 数据的合成

      3 字符数据处理

      4 日期数据处理

      等


      数据的重塑,可以理解为把数据重新格式化,便于开展后续工作。至于是长数据转换为宽数据,还是宽数据转换为长数据,我们需要具体问题具体分析了。

      数据的合成,基于表之间的关系型,把数据做集成或者拼接操作。

      字符数据处理,就是对字符格式的数据按着需求做处理;日期数据处理,就是对日期格式数据做处理。


      数据整理工作,通过R语言的tidyverse包以及相关包,可以高效地完成。


      现在,我们通过审核R语言代码,来学习R语言做数据整理的技能。


      # 导入相关R包
      library(tidyverse)
      library(dslabs)

      # 导入数据集
      path <- system.file("extdata", package="dslabs")
      filename <- file.path(path, "fertility-two-countries-example.csv")
      wide_data <- read_csv(filename)

      # 数据的元信息
      wide_data %>% glimpse()

      # 1 数据重塑操作
      # 1)gather函数 长数据 --> 宽数据
      new_tidy_data <- wide_data %>% 
        gather(year, fertility, `1960`:`2015`)
      new_tidy_data %>% 
        slice_head(n = 10) %>% 
        View

      # 等价于
      new_tidy_data1 <- wide_data %>% 
        gather(year, fertility, -country)
      new_tidy_data1 %>% 
        slice_head(n = 10) %>% 
        View

      # 2) spread函数 宽数据 --> 长数据
      new_long_data <- new_tidy_data %>% 
        spread(year, fertility)
      new_long_data %>% 
        slice_head(n = 10) %>% 
        View


      数据重塑函数理解

      R语言学习:数据整理


      # 导入相关R包
      library(tidyverse)
      library(dslabs)

      # 2 数据合并操作
      # 导入数据集
      data("murders")
      data(polls_us_election_2016)
      head(results_us_election_2016)

      # left_join函数 左连接,常用的连接方式
      tab <- murders %>% 
        left_join(results_us_election_2016,
                  by = "state") %>% 
        select(-others)
      head(tab)

      # 数据可视化分析 可视化的目的:发现或者沟通
      library(ggrepel)
      tab %>% ggplot(aes(population/10^6, electoral_votes, label = abb)) +
        geom_point() +
        geom_text_repel() +
        scale_x_continuous(trans = "log2") +
        scale_y_continuous(trans = "log2") +
        geom_smooth(method = "lm", se = FALSE)

      # inner_join函数 内连接
      tab_1 <- slice(murders, 1:6) %>% 
        select(state, population)
      tab_1

      tab_2 <- results_us_election_2016 %>%
        filter(state%in%c("Alabama", "Alaska", "Arizona",
                          "California", "Connecticut", "Delaware")) %>%
        select(state, electoral_votes)
      tab_2

      inner_join(tab_1, tab_2, by = "state")

      # 拓展:
      # 观察下left_join操作,right_join操作,full_join操作,Semi_join操作,anti_join操作差异和功能
      left_join(tab_1, tab_2, by = "state")
      right_join(tab_1, tab_2, by = "state")
      full_join(tab_1, tab_2, by = "state")
      semi_join(tab_1, tab_2, by = "state")
      anti_join(tab_1, tab_2, by = "state")


      数据合并函数理解

      R语言学习:数据整理


      字符处理,我们可以使用stringr包提供的丰富函数集来完成。


      R语言学习:数据整理

      R语言学习:数据整理


      关于这些函数怎么使用,可以直接查看函数帮助文档以及函数的用例,以快速学习和掌握。


      # 4 时间和日期处理
      # 使用lubridate包
      library(tidyverse)
      library(dslabs)
      library(lubridate)
      data("polls_us_election_2016")
      polls_us_election_2016$startdate %>% head
      class(polls_us_election_2016$startdate)
      as.numeric(polls_us_election_2016$startdate) %>% head
      as.Date("1970-01-01") %>% as.numeric
      polls_us_election_2016 %>% filter(pollster == "Ipsos" & state =="U.S.") %>%
        ggplot(aes(startdate, rawpoll_trump)) +
        geom_line()

      set.seed(2002)
      dates <- sample(polls_us_election_2016$startdate, 10) %>% sort
      dates
      # 使用lubridate包获取年、月、日信息,一种特征工程方法
      data_frame(date = dates,
                 month = month(dates),
                 day = day(dates),
                 year = year(dates))

      # 字符串转换为日期操作
      x <- "09/01/02"
      ymd(x)
      mdy(x)
      dmy(x)
      dym(x)
      now()
      now() %>% hour()
      now() %>% minute()
      now() %>% second()
      x <- "Nov/2/2012 12:34:56"
      mdy_hms(x)
      make_date(1970, 7, 6)
      make_date(1980:1989)

      polls_us_election_2016 %>%
        mutate(week = round_date(startdate, "week")) %>%
        group_by(week) %>%
        summarize(margin = mean(rawpoll_clinton - rawpoll_trump)) %>%
        qplot(week, margin, data = .)


      R语言学习:数据整理


      数据整理,除了上述介绍的内容外,还会有其它工作。总之,为了后续的分析和建模需求所开展的一系列前期准备工作,都可以纳入到【数据整理】的范畴。


      数据整理,是一项重要的数据工作技能,与数据可视化技能一样,都非常的重要。



      我创建了R语言群,添加我的微信,备注:姓名-入群,我邀请你进群,一起学习R语言。


      R语言学习:数据整理



      如果你想学习数据科学与人工智能,请关注下方公众号~

      如果你想找数据工作,请关注下方公众号~

      R语言学习专辑:

      2021年第50周:R语言学习

      2021年第49周:R语言学习

      2021年第48周:R语言学习

      2021年第47周:R语言学习

      2021年第46周:R语言学习

      2021年第45周:R语言学习

      2021年第44周:R语言学习

      2021年第43周:R语言学习

      2021年第42周:R语言学习

      2021年第41周:R语言学习

      2021年第40周:R语言学习

      2021年第39周:R语言学习

      2021年第38周:R语言学习

      2021年第37周:R语言学习

      2021年第36周:R语言学习

      2021年第35周:R语言学习

      2021年第34周:R语言学习




      如果觉得本文不错,就顺手帮我转发到朋友圈和微信群哦,谢谢。



      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      南京的故事
      2021年12月20日

      下一篇文章

      用 python 画个火山图
      2021年12月20日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?