首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excell或R:编写代码以自动过滤数据中的非感官变化。

Excell或R:编写代码以自动过滤数据中的非感官变化。
EN

Stack Overflow用户
提问于 2016-01-08 02:11:01
回答 1查看 154关注 0票数 0

我是编程新手,需要指导才能将我的方法转化为代码。

在我的实验室里,我正在做一个时间序列项目,以发现细胞中的哪个基因会在生物体的细胞周期中自然变化。我有一个包含数值的表格数据集(最初为10列,27,000行)。为了分析基因是否在数据集上循环,我将一个时间点(或列)的值除以每个后续时间点(或列),并在数据集(the top section of the picture is an example of spread sheet with numerical value at each time-point. The bottom section is an example of what the time-comparisons looked like across the data中继续这种趋势。

然后,我使用逻辑后面的多个AND / OR标准实施了一个高级过滤器(Source Jeeped)

代码语言:javascript
复制
WHERE (column A >= 2.0 AND column B <= 0.5)
    OR (column A >= 2.0 AND column C <= 0.5)
    OR (column A >= 2.0 AND column D <= 0.5)
    OR (column A >= 2.0 AND column E <= 0.5)
    (etc ...)  

从那里,我在整个数据集(in the photograph, A on the left -- exanple of the original filter, and B -- the filter sliding across the data)上滑动高级过滤器

过滤器产生了符合我的标准的多张基因。为了计算有多少独特的基因符合这个标准,我合并了所有工作表的A列( gene _ ID's ),并删除了重复项,以产生一个独特基因ID的列表。

由于每个电子表格的大小(过滤前的37列,27000行),这个过程花费了我近3个小时。这个过程可以加快吗?如果是这样的话,有人能给我指出正确的方向,或者帮我创建代码来做到这一点吗?

感谢您的时间,如果您需要任何澄清,请不要客气。

EN

回答 1

Stack Overflow用户

发布于 2016-01-08 02:19:57

在R中有几种方法可以做到这一点,但我认为一种常见的、易于考虑的方法是使用any函数。这基本上需要一系列的逻辑测试,并在它们之间放置一个"OR“,因此如果它们中的任何一个返回true,那么它就返回true。您可以将每一列传递给它,然后将其与and组合,以便对列a进行逻辑测试。可能还有其他方法来抽象这一列,但这应该可以让您开始:

代码语言:javascript
复制
df <- data.frame(
    a = 1:100,
    b = 1:100,
    c = 51:150,
    d = 101:200,
    value = rep("a", 100)
)

df[ df$a > 2 & any(df$b > 5, df$c > 5, df$d > 5), "value"] <- "Test Passed!"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34662230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档