美文网首页
DAY7+ 学习笔记 by 康康

DAY7+ 学习笔记 by 康康

作者: ReneeeeKKKK | 来源:发表于2020-12-20 14:03 被阅读0次

《R与tidyverse——数据分析入门》学习笔记

R与tidyverse——数据分析入门

3. dataframe 和 tibble

  1. R中的多变量数据的标准保存形式是dataframe;tibble是dataframe的进化版。
  2. 一个正确的dataframe


    书中截图
  3. 创建tibble
    3.1 新建一个tibble
    tbble() 【注意】tibble是按列写入的
    举例:
my_tibble_1 <- tibble(
                nums = c(4, 5, 6),
                chars = c("hej", "你好", "こんにちは"),
                cplxnums = c("4+8i", "3+5i", "3+4i")
                )

tribble()函数亦可用来创建新tibble. 与tibble()的区别是,tibble()是逐列写入数据,tribble()是逐行写入数据

3.2 把dataframe转变为tibble
a1 <- as_tibble(a) #a是一个已经建好的dataframe
3.3 从外部数据创建tibble
安装readr包,使用read_csv等命令可以比base包中的read.csv更快导入数据,而且可以直接生成tibble格式

readr的命令
  1. 在dplyr中进行数据变换
    4.1 提取单列
    $(仅用于变量名称)与[[]](变量名称或索引)
    4.2 提取多列
    select()可以抓取多列,并返回一个tibble
    屏幕快照 2020-12-18 下午3.25.09.png
select(test1,Sepal.Length,Species)
#可以额外地按照你指定的顺序重排
select(test1, Species, ends_with("Length"))
#ends_with函数用于找名称中包含Length的列

4.3 提取observations(即 “行”)
filter() 可以过滤出某个或多个变量满足某种条件的observations.

#假设我们只想看种名为 virginica且花瓣长度在4和5之间的鸢尾花:
iris_2 <- filter(iris, Species == "virginica", Petal.Length >= 4 & Petal.Length < 5)

4.4 通过索引行数提取行
slice()

iris_3 <- slice(iris, 21:24) # 抓取`iris`的第21行至24行

4.5 排序
arrange()默认从小到大排序
若要从大到小,可以

arrange(iris, -Sepal.Length)
#或
arrange(iris, desc(Sepal.Length))

根据Petal.Width从小到大的顺序排列,若有并列,再根据Petal.Length从大到小的顺序排列
arrange(iris, Petal.Width, -Petal.Length)
4.6 用mutate新增变量或重新赋值变量
mutate()的第一个参数是dataframe/tibble的名称,接下来的参数都是变量名和它们所对应的值;可以直接在计算它们的值的表达式中使用tibble中原有的变量名,如height, weight

women <- as_tibble(datasets::women)#使用datasets中的数据women举例
women
women1 <- mutate(women, 
                 height_in_m = height/39.37,
                 weight_in_kg = weight/2.204) #在新tibble中新增变量,将height和weight改成以m和kg为单位
women1
women2 <- mutate(women, height = height/39.37, weight = weight/2.204)#在新tibble中对height和weight进行重新赋值
women2
women3<-mutate(women2,BMI=weight/height^2)
women3

4.7 管道操作
%>%的名称是“pipe operator”,快捷键默认是command+shift+M

其本质上就是把它左边的运算结果作为右边函数的第一个参数,然后再根据使用者提供的其它参数计算右边的函数。第一行是操作的对象 (aids),下面每一行是一次操作,与逻辑顺序一致,而且不需要每进行一次操作就赋值/重新引用新的数据,每个函数的第一个参数(dataframe/tibble名称)被省略了。

aids_4<-select(mutate(filter(aids,status=="D"),span=death-diag),span)
#一环套一环,读取不易,且需要从里往外读
head(aids_4) 
# A tibble: 6 x 1
   span
  <int>
1   176
2    67
3   432
4    77
5   275
6   373
aids_5<-aids %>% filter(status=="D") %>% mutate(span=death-diag) %>% select(span)  
#使用管道操作后可以从前往后读取,逻辑顺畅,且不易出错
head(aids_5)
# A tibble: 6 x 1
   span
  <int>
1   176
2    67
3   432
4    77
5   275
6   373
identical(aids_4,aids_5)
[1] TRUE

4.8 group_by与summarise
这是两个经常被放在一起使用的,实用且强大的函数。
group_by()用于分组
summarise()可以汇总计算平均值、标准差、标准误等等

> wb_group<-group_by(wb,wool,tension)
> wb_group
# A tibble: 54 x 3
# Groups:   wool, tension [6]
   breaks wool  tension
    <dbl> <fct> <fct>  
 1     26 A     L      
 2     30 A     L      
 3     54 A     L      
 4     25 A     L      
 5     70 A     L      
 6     52 A     L      
 7     51 A     L      
 8     26 A     L      
 9     67 A     L      
10     18 A     M      
# … with 44 more rows
> wb_sum <- summarise(wb_group,n = n(),MEAN= mean(breaks))
`summarise()` regrouping output by 'wool' (override with `.groups` argument)
> wb_sum
# A tibble: 6 x 4
# Groups:   wool [2]
  wool  tension     n  MEAN
  <fct> <fct>   <int> <dbl>
1 A     L           9  44.6
2 A     M           9  24  
3 A     H           9  24.6
4 B     L           9  28.2
5 B     M           9  28.8
6 B     H           9  18.8

相关文章

  • DAY7+ 学习笔记 by 康康

    《R与tidyverse——数据分析入门》学习笔记 R与tidyverse——数据分析入门[https://tia...

  • 学习笔记Day3 by康康

    Conda Conda是什么 Conda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依...

  • Day6学习笔记 by康康

    学习R中重要的对象类型 操作截屏 回答问题 save(X,file="test.RData")这句代码如果报错ob...

  • 学习笔记Day7 by康康

    一些辅助学习的网站 R与tidyverse——数据分析入门[https://tianyishi2001.githu...

  • 笔记本(微小说)

    康新约别的能力没有,唯独喜欢记笔记,还特别喜欢收藏很多笔记本。因为笔记本,康新约才出了名,因为喜欢很多的笔记本,康...

  • 学习笔记Day4+5 by康康

    认识R和Rstudio 先前已有初步的基础,也已安装 R语言基础 操作截屏

  • 康康英文学习分享

    大家好,我是Lisa妈牛津学习群里的康康妈,今天跟大家分享一下我跟康康一起学习牛津树的过程。康康不是群里最棒的娃,...

  • 康康康

    老叔还是对的

  • 康康

    我想我即使在很久很久以后,也会很骄傲的对别人讲,我当过老师,我照顾陪伴过一群比世界上所有的小孩都要可爱的孩子。...

  • 康康

    2020年11月20日 周五 天气:多云 亲子日记第1082天 驰翔驰程妈妈 今天上幼儿园我很高兴,早晨我...

网友评论

      本文标题:DAY7+ 学习笔记 by 康康

      本文链接:https://www.haomeiwen.com/subject/xunxnktx.html