【发布时间】:2018-01-24 13:15:07
【问题描述】:
我有我正在为实验室分析的数据,并且我是第一次尝试使用 R。
我一直在阅读有关根据条件选择行的内容,但我似乎找不到为我的数据执行此操作的方法。
我制作了一个数据框,但没有命名列。每一列都是我正在测试的一种细菌的特定变体,它的 OD/吸光度值在大约 15 小时内不断增加(每列总共 56 行)。
我想从每个列中选择值范围为 0.2 到 0.4 的行。
所以理想情况下我想要这样的东西:
V1 V2
9 0.2100 7 0.2181
10 0.3017 8 0.3162
11 0.4079 9 0.4137
等等
我想我可以从每一列中手动选择行,但必须有更快的方法。
然后我计划计算子集的每一列的平均值。
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
您可以尝试
lapply(df1, function(x) x[x > 0.2 & x < 0.4])并将其保存在list中,因为每列中符合条件的元素数量可能会有所不同 -
如果您只想要这些方法,请使用
sapply(df, function(x) mean(x[x > .2 & x < .4]))。这样,您将获得长度为ncol(df)的向量,其中包含每列子集的平均值。 -
@LAP 太棒了,非常感谢!但是我如何结合你的两个答案呢?更具体地说,我只想要最接近 0.3 的值,然后是它周围的 2 个值,所以在 0.2 和 0.4 左右,但我只想要 3 个值。正如 akrun 建议的那样,某些列中的元素数量不同。如何确保 sapply 平均值适用于 3 个值?