csvtk命令行版极简dplyr

写在前面

什么时候写 csvtk 呀,csvtk 也借鉴了些 datamash 的东西。

之前写 datamash 的使用教程,收到了一位读者的私信,内容如上。

话说这位读者不是别人,正是大名鼎鼎 seqkit 和 csvtk 的开发者 shenwei356 (github ID),江湖人称「爪哥」。我从来没有问过他为什么 ID 有个数字后缀「356」,我私以为是一年 365 天里有 356 天他都在写程序,剩下的几天过年放假。说到爪哥,如果你看到这篇文章之前不知道他我不怪你,但是今天以后希望他可以每天都和你在一起。

爪哥用两个工具就让自己在生物信息领域有了一席之地。其中 seqkit 是用来处理 fasta/q 文本的工具,这篇文章要写的 csvtk 是处理 c/tsv 文本的工具。如果你感觉我的说法夸张了,不妨想想每天接触到的各种文件,无论是 gff 还是 bed 还是 sam 甚至是 vcf,其本质都是 tsv 格式,再加上 seqkit 针对的 fasta 和 fastq。如果你能熟练使用这两个工具,今后的每一天就都会感受到爪哥无微不至的关怀。我经常在敲完一行命令后会在心里大喊一声「爪哥NB」。

linux极简统计分析工具datamash教程

引子

之前写 awk 教程的时候,曾经提到过一些对文本中行列进行某些计算统计的需求,例如使用数组分类求和。一些基本需求 awk 都可以实现,但是写起来稍显复杂。在 R 中使用 dplyr 或者基础函数 aggregate() 可以方便的进行分组操作,如果能在 linux 中使用更加简洁的单行命令针对数值和字符进行一些基本运算就省去了在 R 终端操作的时间。这篇文章介绍一个 linux 中能满足这类需求的工具 GNU datamash

两个使用 awk 的例子如下:

数据分析需要更好的问题

设计思维和更好的问题

这篇文章的主要内容来自 Roger Peng 最近的一篇博客 Tukey, Design Thinking, and Better Questions。读了之后有些启发便做简单记录。

John Tukey 是美国的数据学,快速傅里叶变换发明人。它在 1962 年发表过一篇题为 “The Future of Data Analysis” 的论文,其中有一句非常著名的话。

Far better an approximate answer to the right question, which is often vague, than an exact answer to the wrong question, which can always be made precise.

Tukey 将数据分析的前三个阶段定义为如下三步:

  1. 识别一个问题 Recognition of problem
  2. 使用一个方法 One technique used
  3. 使用大量其他方式 Competing techniques used

关于文档,还没人告诉你的那点事

学习一个新的工具或者软件,首选方法是阅读开发者写的软件文档,因为 TA 最清楚怎么回事;其次是阅读最新的英文相关使用讨论或者介绍,因为中文的很多资料往往滞后;再次才是阅读中文相关介绍,而且一定要谨慎参考认真判断。评判一个工具好坏的标准之一也是其文档是否写的足够「好」。

因此无论是开发者还是用户,文档都至关重要。那到底好的文档需要包含哪些内容或者应该如何写出一个尽量好的文档呢?最近看到一篇英文博客:What nobody tells you about documentation ,以下为尽量保留作者原意的不完全翻译版本供你参考。

R 语言可视化之案例

qplot 使用

导入所需数据格式为 data.frame

data(mtcars)
df <- mtcars[, c("mpg", "cyl", "wt")]
head(df)

qplot() 基本用法

qplot(x, y=NULL, data, geom="auto",
xlim = c(NA, NA), ylim =c(NA, NA))

# geom 画什么图;main 题目;xlab,ylab xy 轴标签
# color 颜色;size 点大小;shape 点形状

R 语言可视化之原理概述篇

整体介绍

一张统计图形就是从数据到几何对象 (geometric object, 缩写为 geom, 包括点、线、条形等)的图形属性 (aesthetic attributes, 缩写为 aes, 包括颜色、形状、大小等)的一个映射。此外,图形中还可能包含数据的统计变换 (statistical transformation, 缩写为 stats), 最后绘制在某个特定的坐标系 (coordinate system, 缩写为 coord) 中,而分面 (facet, 指将绘图窗口划分为若干个子窗口)则可以用来生成数据中不同子集的图形。

要素

  • 数据 (data)
  • 映射 (mapping): 建立数据与图形元素的关系
  • 几何对象 (geom):对数据的渲染和展示
  • 统计变换 (stats)
  • 标度 (scale)
  • 坐标系 (coord)
  • 分面 (facet)
  • 主题 (theme)

多快好省用 R 处理数据

很早之前我一直都是使用命令行来处理软,cut,sed 再 grep 再加上终极 awk 基本上就可以随意的按照需求处理各种软件跑出来的文本文件了,再后来就要开始学习 python,python 学的怎么样了呢?呵呵。

虽然做过统计学课的助教,上课的时候用的也是 R 语言,但是博客里并没有几篇 R 相关的文章。印象中一篇是 给初学者的 R 语言介绍(写这篇文章当时是为了激发一点学生学习 R 语言的热情),另一篇是 R 必备基础知识(写这篇文章当时是因为在写 R 与统计学基础系列文章,就不得不总结一些 R 语言的基础知识)。

说实话,我本身对 R 还是非常喜欢和欣赏的,但是日常的使用需求并不高。就拿最基本的文本处理来说,基本上都可以在 shell 中进行随心所欲地增删改成,处理成很多 R 相关软件需要的文本格式,用需要的 R 包跑一两个命令就可以了。但是目前已经有点厌倦了这样的生活,我后期打算有机会的话用 R shiny 写一点网页工具给大家娱乐,也打算精进一下 R 的画图技能。这里就 have to 用 R 去做一些数据处理,于是就有了这样一系列文章。这篇是关于如何用 R 多快好省的进行数据处理。另外,说句题外话,从我这几天的实际处理数据情况来看,R 有些工作做起来,还是太慢了,也可能是我的业务不够娴熟吧。

R 语言必备基础知识

写着写着 R 与统计基础莫名其妙地又写开 R 基础了,一起写吧。

R 编程基础

算数运算

常用的+ - * \ ^ 可以直接在 console 中计算

计算函数

常用的log2(x) log10(x) exp(x) sin(x) tan(x) abs(x) sqrt(x) 也可以直接计算

变量赋值

a <- 3;a <- "b"赋值符号是<-, 使用 ls() 可以显示当前已经创建的对象

DNS 的一个新选择

什么是 DNS

网域名称系统(英文:Domain Name System,缩写:DNS)是将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。通过这个系统我们可以将一个域名对应到其真实的 IP 地址。例如 kaopubear.top 的域名是人类可读的,但是机器不能识别,我们必须找到其 IP 才可以。这里的 DNS 就像是一个通讯录,我们把名字输入进去,返回一个固定的手机可识别的电话号码然后拨号。
几乎互联网上的一切活动均由一个 DNS 请求开始。DNS 是互联网的目录。点击每一个链接发每一封邮件时,设备所要做的第一件事都是询问这个目录看能在哪里找到这项内容。

好用的 DNS 有什么标准

很简单:快速安全,无劫持,能解析到。

但是如果你用到了一个坑爹的 DNS,那问题远比你想象的严重。大多数人都是使用运营商自动分配的 DNS,但有时候你会发现自己的网页出现了一些莫名其妙的低俗广告,或者有些网站就是打不开。这就很可能你的 DNS 给你的域名解析了一个假的 IP 地址,或者对你的 DNS 进行了劫持插入了运营商想让你看到的东西,比如广告。

也就是说,如果想,DNS 可以决定哪些域名给你解析,哪些域名不给你解析,哪些给你解析错。 ISP 和一些有需要的人都能看到你访问的每个网站和使用的每个应用,如果他们想,DNS 提供商可以出售你的使用信息给别人。

给初学者的 R 语言介绍

几点说明:

  1. 文档由 R Markdown[^1] 写成。

  2. 下文是我暂时能想到的一些内容,水平有限,供大家了解,大牛小神都可以出门右拐不用看哈。

  3. 写作初衷:目前在水中科院上海分院这边生物统计学助教,本文及后续一段时间里的 R 相关内容主要是为了供这门课的同学参考,同时也是自我总结的过程。


数据科学重要性

摩尔定律 [^2] 告诉我们计算机的计算能力每两年就会翻一倍,这使得数以百万计的计算机生成了大规模数据集。

海量的数据如何处理成了各行各业都需要面对和解决的问题;如何从海量信息中提取有效信息并总结出一般性的规律也值得我们去思考。

数据驱动下产生的这门学科,被我们称为数据科学(Data science),其中涉及到数据的收集、处理、分析和呈现四大方面。

2012 年,哈佛商业评论将 Data Scientist 定义为 21 世纪最性感的职业 ^3

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×