【发布时间】:2014-03-21 10:10:41
【问题描述】:
我有一个数据框,其中行中的值和列中的样本(两组,A 和 B)。例子df:
df <- rbind(rep(1, times = 10),
c(rep(1, times = 9), 2),
c(rep(1, times = 8), rep(2, times = 2)),
c(rep(1, times = 7), rep(2, times = 3)), rep(1, times = 10),
c(rep(1, times = 9), 2),
c(rep(1, times = 8), rep(2, times = 2)),
c(rep(2, times = 7), rep(1, times = 3)))
colnames(df) <- c("A1", "A2", "A3", "A4", "A5",
"B1", "B2", "B3", "B4", "B5")
row.names(df) <- 1:8
我一直在使用以下方法选择所有样本都低于某个阈值的行子集:
selected <- apply(df, MARGIN = 1, function(x) all(x < 1.5))
df.sel <- df[selected,]
结果是
df[c(1,5),]
我需要另外两种选择。首先是选择,例如,至少 90% 的样本低于阈值 1.5 的所有行。这样的结果应该是:
df[c(1,2,5,6)]
第二种是按组选择。比如说,至少一个组中至少 50% 的值大于 1.5 的行。这应该给我以下df:
df[c(4,8),]
我是 Stackoverflow 的新手,过去曾有人要求我举例说明。我希望这很好!
【问题讨论】:
-
如果您将语言添加为标签更容易找到可以帮助您的开发人员
-
完成,很抱歉,谢谢!
-
a) 你能让你的数据框值更加多样化吗?几乎全是 b) 不要通过声明变量
select来影响内置select -
apply(df, MARGIN = 1, ...)可以避免,在这种情况下(几乎全部)你可以作弊,例如df[rowMeans(df)<1.5, ] -
@Jake:我的错。我在想
subset(..., select=...)的select参数,有人发布了一个关于使用变量select进行阴影的问题,它引起了混乱。
标签: r subset logical-operators