美文网首页
《R语言实战》学习笔记---Chapter4(7) 基础数据管理

《R语言实战》学习笔记---Chapter4(7) 基础数据管理

作者: RSP小白之路 | 来源:发表于2023-08-15 09:08 被阅读0次

R拥有强大的索引特性, 可以用于访问对象中的元素。 也可利用这些特性对变量或观测进行选入和排除。
总的来说,R中对象取子集,两种方式,R对象后面跟符号[]并添加条件,或者使用函数
继续以管理者服从度信息数据为例进行数据子集选取的说明。

manager <- c(1, 2, 3, 4, 5)
date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08", "5/1/09")
country <- c("US", "US", "UK", "UK", "UK")
gender <- c("M", "F", "F", "M", "F")
age <- c(32, 45, 25, 39, 99)
q1 <- c(5, 3, 3, 3, 2)
q2 <- c(4, 5, 5, 3, 2)
q3 <- c(5, 2, 5, 4, 1)
q4 <- c(5, 5, 5, NA, 2)
q5 <- c(5, 5, 2, NA, 1)
leadership <- data.frame(manager, date, country, gender, age,
q1, q2, q3, q4, q5, stringsAsFactors=FALSE)
> print(leadership )
  manager     date country gender age q1 q2 q3 q4 q5
1       1 10/24/08      US      M  32  5  4  5  5  5
2       2 10/28/08      US      F  45  3  5  2  5  5
3       3  10/1/08      UK      F  25  3  5  5  5  2
4       4 10/12/08      UK      M  39  3  3  4 NA NA
5       5   5/1/09      UK      F  99  2  2  1  2  1

选入(保留) 变量

  • 通过数据框索引进行选择
newdata <- leadership[,c(6:10)]
> print(newdata)
  q1 q2 q3 q4 q5
1  5  4  5  5  5
2  3  5  2  5  5
3  3  5  5  5  2
4  3  3  4 NA NA
5  2  2  1  2  1

也可以通过变量名实现同样的运行效果,下面会用到一个字符串拼接函数paste

  • 通过变量名进行选择
varlist <- c("q1", "q2", "q3", "q4", "q5")  # 这两句是等价的
varlist <- paste("q", 1:5, sep = '')  # 这两句是等价的
newdata1 <- leadership[varlist]
> print(newdata1 )
  q1 q2 q3 q4 q5
1  5  4  5  5  5
2  3  5  2  5  5
3  3  5  5  5  2
4  3  3  4 NA NA
5  2  2  1  2  1

剔除(丢弃) 变量

  • 通过变量名
    剔除变量的原因有很多。 举例来说, 如果某个变量中有很多缺失值, 你可能就想在进一步分析之前将其丢弃。这里会用到一个判断是否包含其中的语句%in%
varlist <- names(leadership) %in% c("q3", "q4")
newdata <- leadership[!varlist]
>  print(newdata )
  manager     date country gender age q1 q2 q5
1       1 10/24/08      US      M  32  5  4  5
2       2 10/28/08      US      F  45  3  5  5
3       3  10/1/08      UK      F  25  3  5  2
4       4 10/12/08      UK      M  39  3  3 NA
5       5   5/1/09      UK      F  99  2  2  1

对上述语句的说明,

  • names(leadership)生成了包含所有变量名的字符型向量;

  • names(leadership) %in% c("q3", "q4")返回一个逻辑型向量,匹配"q3", "q4"TRUE,其它为FALSE

  • !varlist运算符!取非将逻辑反转,即FALSE变为TRUE,其它TRUE变为FALSE

  • leadership[!varlist]选取逻辑值为TRUE的列,"q3", "q4"剔除掉。

  • 通过索引值
    同时,也可以根据索引值前面加-进行剔除;

newdata <- leadership[c(-8,-9)]
>  print(newdata)
  manager     date country gender age q1 q2 q5
1       1 10/24/08      US      M  32  5  4  5
2       2 10/28/08      US      F  45  3  5  5
3       3  10/1/08      UK      F  25  3  5  2
4       4 10/12/08      UK      M  39  3  3 NA
5       5   5/1/09      UK      F  99  2  2  1
  • 通过将若干变量赋值为NULL
leadership$q3 <- leadership$q4 <- NULL
> print(leadership)
  manager     date country gender age q1 q2 q5
1       1 10/24/08      US      M  32  5  4  5
2       2 10/28/08      US      F  45  3  5  5
3       3  10/1/08      UK      F  25  3  5  2
4       4 10/12/08      UK      M  39  3  3 NA
5       5   5/1/09      UK      F  99  2  2  1

注意, NULLNA (表示缺失) 是不同的。


选入观测

选入或剔除观测(行) 通常是成功的数据准备和数据分析的一个关键方面。

  • 通过提供行下标,列下标留空的方式
>  newdata <- leadership[leadership$gender == "M" , ]
>  print(newdata )
  manager     date country gender age q1 q2 q3 q4 q5
1       1 10/24/08      US      M  32  5  4  5  5  5
4       4 10/12/08      UK      M  39  3  3  4 NA NA

上例中,选择了性别是男性的观测。


subset()函数

使用subset() 函数大概是选择变量和观测最简单的方法了。 两个示例
如下:

newdata <- subset(leadership, age >= 35 | age < 24, 
 select=c(q1, q2, q3, q4))  #选择所有age值大于等于35或小于24岁的q1至q4的变量
newdata <- subset(leadership, gender=="M" & age > 25, 
select=gender:q4)  # 选择所有25岁以上的男性,gender至q4的变量

随机抽样

sample()函数能够让你从数据集中(有放回或无放回地) 抽取大小为n 的一个随机样本。

使用以下语句从leadership 数据集中不放回地随机抽取一个大小为3的样本:

mysample <- leadership[sample(1:nrow(leadership), 3, replace=FALSE),]
> print(mysample  )
  manager     date country gender age q1 q2 q3 q4 q5
3       3  10/1/08      UK      F  25  3  5  5  5  2
1       1 10/24/08      US      M  32  5  4  5  5  5
4       4 10/12/08      UK      M  39  3  3  4 NA NA

相关文章

  • 学习小组笔记Day4-Jocelyn

    2020年7月6日学习笔记 R语言基础 一、准备工作 下载R语言: https://mirrors.tuna.ts...

  • 学习小组Day4笔记--行

    正式开始学习R语言了,今天笔记内容为R语言基础和ggplot2的入门学习 R语言基础 1、认识R与RStudio ...

  • R语言常用函数整理(基础篇)

    R语言基础函数整理 R语言常用函数整理本篇是基础篇,即R语言自带的函数。 一、数据管理 vector:向量nume...

  • 数据分析(一): 《R语言实战》

    2016.12.31~2017.01.01开始学习R语言 计划利用元旦3天假期学完《R语言实战》1~7章粗略学习...

  • R 语言实战 读书笔记

    R语言实战(第2版) 学习笔记 1. R语言介绍 1.1 为什么用R语言 bla 1.2 基本操作 图表演示命令 ...

  • R语言-0基础学习4-实战1-常见操作

    R语言学习系列R语言-0基础学习1-数据结构R语言-0基础学习2-构建子集R语言-0基础学习3-循环排序信息处理函...

  • [R语言]Chapter 4 基本数据管理

    Chapter4 基本数据管理 这是我对基本数据管理部分的笔记,总的来说,能够ren 一个示例创建leadersh...

  • R语言基础学习7

    人见人爱 tidyverse tidyrdplyrstringrggplot2 安装好包 1 数据清理 tidyr...

  • R 语言--日期值的输入

    学习R语言,很多人都推荐使用图灵程序设计丛书中的"R in Action"-《R语言实战》作为R语言学习的入门书籍...

  • R语言---基础篇

    基础知识总结 小羊 前段时间,我一直在学习R语言,通过编程艺术和PPV课程,还有R实战,内容还没有学习完。 现在,...

网友评论

      本文标题:《R语言实战》学习笔记---Chapter4(7) 基础数据管理

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