使用设置的窗口大小和测试条件搜索数据框

时间:2014-03-23 23:20:14

标签: r loops dataframe

我想循环浏览大约15,000个文件,每个文件有~16,000行。每个文件有3列。如果满足某些条件,我想一次检查3行。如果是,我想写出部分文件(如下所示)。

我想要满足的条件是,如果第3列在所有3行中的值为30或更多,则打印出:名称(column1), first last 第2列的值,以及第3列的值。然后,它应该在文件中的下三行搜索相同的条件。输入如下所示:

d3.1    1       2
d3.1    2       2
d3.1    3       2
d3.1    4       31
d3.1    5       50
d3.1    6       40
d3.1    7       13 

输出应如下所示:

d3.1   4   6   31   50   40

我现在有类似的东西但是我不确定如何一次搜索第3列,第3行并重新格式化输出:

library(data.table)
for (i in 1:15000){
  file <- list.files('~/dir',full.names=T)
  x <- fread(file[i], header=F)}

1 个答案:

答案 0 :(得分:1)

尝试功能的内容:

require(data.table)
dat <- data.table(V1="d3.1",V2=1:7,V3=c(2,2,2,31,50,40,13))

dat$grp <- rep(1:ceiling(nrow(dat)/3),each=3)
dat[, if(all(V3>30)) c(as.character(V1[1]),V2[1],V2[3],as.list(V3)), by=grp]

#   grp   V1 V2 V3 V4 V5 V6
#1:   2 d3.1  4  6 31 50 40