作者简介Introduction

taoyan:R语言中文社区特约作家,伪码农,R语言爱好者,爱开源。

个人博客: https://ytlogos.github.io/

公众号:生信大讲堂

往期回顾

R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

R语言学习笔记之相关性矩阵分析及其可视化

ggplot2学习笔记系列之利用ggplot2绘制误差棒及显著性标记

ggplot2学习笔记系列之主题(theme)设置

用circlize包绘制circos-plot

利用gganimate可视化R-Ladies发展情况

一篇关于国旗与奥运会奖牌的可视化笔记

利用ggseqlogo绘制seqlogo图

R语言data manipulation学习笔记之创建变量、重命名、数据融合


数据分析过程中我们常常需要从数据集中抽取部分数据,本文将介绍如何提取子数据集,主要利用R自带的函数,以后会专门介绍data manipulation包dplyr。 提取子数据集主要分为select以及exclude,这里主要介绍两种方法,一是利用操作符[]进行选取,二是利用subset()进行抽取。

利用[]进行提取

#use the iris dataset

head(iris)

## Sepal.Length Sepal.Width Petal.Length Petal.Width Species

## 1   5.1          3.5          1.4        0.2       setosa

## 2   4.9          3.0          1.4        0.2       setosa

## 3   4.7          3.2          1.3        0.2       setosa

## 4   4.6          3.1          1.5        0.2       setosa

## 5   5.0          3.6          1.4        0.2       setosa

## 6   5.4          3.9          1.7        0.4       setosa

# check the column namenames(iris)

## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"  "Species"

加入我们想要提取Sepal.Length、Sepal.Width两列数据,可以使用如下代码:

dt1 <- iris[, c("Sepal.Length","Sepal.Width")]head(dt1)

##   Sepal.Length Sepal.Width

## 1      5.1         3.5

## 2      4.9         3.0

## 3      4.7         3.2

## 4      4.6         3.1

## 5      5.0         3.6

## 6      5.4         3.9

#也可以直接用列序号代替,比如这里我们想要提要前两列

dt2 <- iris[, c(1, 2)]head(dt2)

##   Sepal.Length Sepal.Width

## 1      5.1         3.5

## 2      4.9         3.0

## 3      4.7         3.2

## 4      4.6         3.1

## 5      5.0         3.6

## 6      5.4         3.9

如果我们需要删除前两列,只需在序号之前添加符号 - 就行

dt3 <- iris[, c(-1, -2)]head(dt3)

##   Petal.Length Petal.Width Species

## 1     1.4          0.2      setosa

## 2     1.4          0.2      setosa

## 3     1.3          0.2      setosa

## 4     1.5          0.2      setosa

## 5     1.4          0.2      setosa

## 6     1.7          0.4      setosa

可以看出十分简单就可以提取子数据集,下面介绍subset(),subset()相比于[]主要是可以方便的根据条件提取子数据集。

利用subset()进行提取

#create a dataset

fy <- c(2010,2011,2012,2010,2011,2012,2010,2011,2012)

company <- c("Apple","Apple","Apple","Google","Google","Google","Microsoft","Microsoft","Microsoft")

revenue <- c(65225,108249,156508,29321,37905,50175,62484,69943,73723)

profit <- c(14013,25922,41733,8505,9737,10737,18760,23150,16978)

companiesData <- data.frame(fy, company, revenue, profit)

head(companiesData)

##    fy company revenue profit

## 1 2010 Apple   65225 14013

## 2 2011 Apple   108249 25922

## 3 2012 Apple   156508 41733

## 4 2010 Google   29321 8505

## 5 2011 Google   37905 9737

## 6 2012 Google   50175 10737

假如我们想要提取revenue超过十万的公司

com1 <- subset(companiesData, revenue>100000)

head(com1)

##    fy company revenue profit

## 2 2011 Apple   108249 25922

## 3 2012 Apple   156508 41733

或者我们想要提取在2012年revenue超过6万的公司

com2 <- subset(companiesData, fy=="2012"&revenue>60000)

head(com2)

##    fy  company  revenue profit

## 3 2012 Apple     156508 41733

## 9 2012 Microsoft  73723 16978

或者提取在2012年revenue超过6万、profit超过4万的公司

com3 <- subset(companiesData, fy=="2012"&revenue>60000&profit>40000)

com3

##    fy company revenue profit

## 3 2012 Apple 156508 41733

条件选择也可以使用或,比如我们想要提取profit超过2万或者revenue低于5万的公司

com4 <- subset(companiesData, revenue<50000|profit>20000)

com4

##    fy company   revenue profit

## 2 2011 Apple     108249 25922

## 3 2012 Apple     156508 41733

## 4 2010 Google    29321 8505

## 5 2011 Google    37905 9737

## 8 2011 Microsoft 69943 23150

本文只是粗略的讲解,其实subset()的用法很广,有兴趣的朋友可以自行探索。

SessionInfo

sessionInfo()

## R version 3.4.0 (2017-04-21)

## Platform: x86_64-pc-linux-gnu (64-bit)

## Running under: Ubuntu 16.04.2 LTS

##

## Matrix products: default

## BLAS: /usr/lib/atlas-base/atlas/libblas.so.3.0

## LAPACK: /usr/lib/atlas-base/atlas/liblapack.so.3.0

##

## locale:

## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C

## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8

## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8

## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C

## [9] LC_ADDRESS=C LC_TELEPHONE=C

## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

##

## attached base packages:

## [1] stats graphics grDevices utils datasets methods base

##

## loaded via a namespace (and not attached):

## [1] compiler_3.4.0 backports_1.1.0 magrittr_1.5 rprojroot_1.2

## [5] tools_3.4.0 htmltools_0.3.6 yaml_2.1.14 Rcpp_0.12.11

## [9] stringi_1.1.5 rmarkdown_1.6 knitr_1.16 stringr_1.2.0

## [13] digest_0.6.12 evaluate_0.10.1

 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)

公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

R语言data manipulation学习笔记之subset data相关推荐

  1. 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)

    学习者:骆栢维 题目来源:生信基石之R语言 中级10 个题目:http://www.bio-info-trainee.com/3750.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...

  2. R语言与机器学习学习笔记(分类算法)

    转载自:http://www.itongji.cn/article/0P534092014.html 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经 ...

  3. R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)

    出处:AI入门学习 dplyr包主要用于数据清洗和整理,主要功能有:行选择.列选择.统计汇总.窗口函数.数据框交集等是非常高效.友好的数据处理包,学清楚了,基本上数据能随意玩弄,对的,随意玩弄,简直大 ...

  4. R语言与点估计学习笔记(刀切法与最小二乘估计)

    一.       刀切法(jackknife) 刀切法的提出,是基于点估计准则无偏性.刀切法的作用就是不断地压缩偏差.但需要指出的是缩小偏差并不是一个好的办法,因为偏差趋于0时,均方误差会变得十分大. ...

  5. 【转载】R语言与数据挖掘学习笔记

    (1):数据挖掘相关包的介绍 今天发现一个很不错的博客(http://www.RDataMining.com),博主致力于研究R语言在数据挖掘方面的应用,正好近期很想系统的学习一下R语言和数据挖掘的整 ...

  6. R plot图片背景设置为透明_学习健明老师发布的R语言练习题的学习笔记(一)...

    学习者:骆栢维 题目来源:生信基石之R语言 初级10 个题目:http://www.bio-info-trainee.com/3793.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...

  7. R语言与点估计学习笔记(矩估计与MLE)

    众所周知,R语言是个不错的统计软件.今天分享一下利用R语言做点估计的内容.主要有:矩估计.极大似然估计.EM算法.最小二乘估计.刀切法(Jackknife).自助法(Bootstrap)的相关内容. ...

  8. R语言基础知识-学习笔记汇总

    B站课程:生信必备技巧之R语言基础教程全集的代码笔记 1.R语言包安装 rm(list = ls()) # 设置镜像: options()$repos options()$BioC_mirror #o ...

  9. R语言入门(学习笔记)

    文章目录 软件安装及更新 安装R语言 安装Rstudio(集成开发环境,在安装R语言后再安装) R版本更新 软件操作 窗口简介 界面设置 编码转换 快捷键 基础语法 注释 赋值 清除 帮助文档 R包 ...

  10. R语言ggplot2包学习笔记

    声明 本系列是跟着<R数据科学>来学习的. aes内外使用color的差别 ggplot2自带的数据框 > str(mpg) Classes 'tbl_df', 'tbl' and ...

最新文章

  1. 捣鼓 Subversion
  2. 插入顶部_轻巧的衣领插入技术
  3. 网络视频监控与人脸识别
  4. 【JNI知识一】--JNI接口函数与指针
  5. PIE SDK矢量数据的读取
  6. 视频教程-Word从入门到精美排版教程:手把手学习Word2019精美排版-Office/WPS
  7. FLAG_ACTIVITY_CLEAR_TOP和singleTask的区别
  8. TIM下载的文件在哪个手机文件夹中(安卓)
  9. Android 拍摄(横 \ 竖屏)视频的懒人之路
  10. puzzle(1024)帐篷、星之战
  11. Kali下卸载程序和安装程序的方法
  12. MySQL隔离级别的底层理解(MVCC+锁)
  13. *2-2 OJ 1163 导弹拦截之测试版
  14. 物联网介绍の高屋建瓴篇
  15. 常见的直流无刷电机发热情况分析和解决方法分享--【无刷电机驱动】
  16. 优秀!研二实习生“阿里+字节+拼多多+美团”四杀offer
  17. M1 芯片 MacBook Pro/Air 软件兼容性如何?是否值得购买?
  18. 智慧城市智能交通系统(ITS)
  19. 视频webm怎么转换成mp4?
  20. bootstarp项目报告

热门文章

  1. 我已经不用 try catch 处理异常了!太辣鸡了!
  2. Spring的Controller是单例还是多例,怎么保证并发的安全
  3. 来自微信官方:微信支付跨平台软件架构首次曝光
  4. 去阿里面试被问:如果是MySQL引起的CPU消耗过大,你会如何优化?
  5. 影响腾讯 20 年的产品方法论
  6. 推荐几个非常有用的工具
  7. 阿里45K高级Java岗,必备技能清单
  8. Filter In Baan!
  9. 课堂小结:返回一个整数数组所有子数和的最大值
  10. Luogu P1120 小木棍 [数据加强版]