subset/which/[–筛选数据

[]、which与subset是常用的从数据框中提取数据的命令,本博文讨论一下其常规的一些用法

一、[ ]数据的提取

[ 用来提取对象相同的类型,可以包含不止一个元素
[[用来提取额 list或data frame里面的元素,一般只能提取单个的元素
$通过名字来提取 list或data frame的元素;

二、which的用法

判断某个数是否存在

三 、Subset

# using subset function
we select all rows that have a value of age greater than or equal to 20 or age less then 10. We keep the ID and Weight columns.

In the next example, we select all men over the age of 25 and we keep variables weight through income (weight, income and all columns between them).
# using subset function (part 2)

Random Samples
Use the sample( ) function to take a random sample of size n from a dataset.
# take a random sample of size 50 from a dataset mydata
# sample without replacement

pairs(c2009[,2:5])

四、subset筛选与索引筛选的区别

索引筛选没法区分NA,不知道该不该删去
> x<-c(6,1:3,NA,12)
> x
[1] 6 1 2 3 NA 12
> x[x>5]
[1] 6 NA 12
> subset(x,x>5)
[1] 6 12

五、案例分析

问题:我们获得很多个样品,每个样品有很多个otu,在进行数据展示的时候,我没法将所有样品的所有Otu都层现出来,那么问题来了,我如何去层现?
1.测序公司一般给的思路就是针对一个Otu,算出他在所有样品的丰度之和,然后按照丰度大小,选取前100个Otu来层现(上海某家测序公司)
2.选缺只要在一个样品中丰度值大于0.01的这样的otu,这是我现在更倾向的问题,至于这个阈值是多少,可以人为的设定,那好,针对第二种策略用R如何实现呢??

策略1:

策略2:

策略3:

很明显策略2的方法更好一些,那么问题来了,我要知道在80%的样品中都存在的OTU,那如何弄呢??

参考资料:
http://www.statmethods.net/management/subset.html
《R语言编程艺术》

发表评论

电子邮件地址不会被公开。 必填项已用*标注