A <- structure(list(name1 = c("trt", "0", "1", "10", "1", "1", "10"
), name2 = c("ctrl", "3", "1", "1", "1", "1", "10")), .Names = c("name1", 
"name2"), row.names = c("cond", "hour", "A", "B", "C", "D", "E"
), class = "data.frame")
B <- structure(list(name1 = c("trt", "0", "1", "1", "1", "1", "1"), 
    name2 = c("ctrl", "3", "1", "10", "1", "1", "1")), .Names = c("name1", 
"name2"), row.names = c("cond", "hour", "A", "B", "C", "D", "E"
), class = "data.frame")


A; B

is(A)

names(A)
B[1, ]

A <- 

    library(data.table)

    # just to preserve the order, non-alphabetically
    idsA <- factor(rownames(A), levels=rownames(A))
    idsB <- factor(rownames(B), levels=rownames(B))

    # convert to data.table with id
    ADT <- data.table(id=idsA, A, key="id")
    BDT <- data.table(id=idsB, B, key="id")

    # filter as needed
    ADT[BDT][name1 > name1.1 & name2 > name2.1, list(id, name1, name2)]

    
