什么是正确的R查询执行选择?

时间:2014-05-22 17:42:40

标签: r select dplyr

我想选择total[,3] >=0.7total[,4] <= 0.3的行数。

total是一个数据框,total[,i]表示i列。

我写了以下查询:

nrow(total[,3]>=0.7 & total[,4]<=0.3) 

但是这给了我

我哪里错了?

3 个答案:

答案 0 :(得分:3)

dplyr解决方案:

使用dplyr包:

filter(total, total[,3] >= 0.7 & total[,4] <= 0.3) %>% summarise( count = n() )

或更明确/可翻译的版本:

total %>% filter(col3_name >= 0.7 & col4_name <= 0.3) %>% summarise( count = n() )

访问:http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html了解详情。

简要说明:

对于满足total内条件的行,

filter()数据框已过滤,结果由n()函数汇总,该函数返回观察次数(在这种情况下是行)。

注意:将第3/4列的名称替换为col3_name和col4_name。

为什么这样?

dplyr旨在成为一种操作表格数据的快捷方式。

答案 1 :(得分:2)

或更常见的

sum(total[,3]>=0.7 & total[,4]<=0.3)

当您将TRUE / FALSE值视为数值时,TRUE的计算结果为1,FALSE的计算结果为0。

虽然从技术上讲,所写的方法对NA值是稳健的。如果您想使用sum忽略NA值,则可以执行

sum(total[,3]>=0.7 & total[,4]<=0.3, na.rm=T)

答案 2 :(得分:0)

知道了。

长度(其中(总[,3]> = 0.7&amp;总[,4] <= 0.3))