基于R中的不同数据帧的值进行子集

chi*_*gry 5 r dataframe

如果行中的每个值都大于不同数据帧中的相应行,我想要对数据进行子集化.我还需要跳过一些顶行.这些先前的问题对我没有帮助,但它是相关的:

基于另一数据帧的内容子集数据帧

使用来自不同数据帧的信息子集数据[r]

> A
     name1 name2
cond   trt  ctrl
hour     0     3
A        1     1
B       10     1
C        1     1
D        1     1
E       10    10
> B
     name1 name2
cond   trt  ctrl
hour     0     3
A        1     1
B        1    10
C        1     1
D        1     1
E        1     1
Run Code Online (Sandbox Code Playgroud)

我要这个.只有A中所有值大于B的行:

     name1 name2
cond   trt  ctrl
hour     0     3
E       10    10
Run Code Online (Sandbox Code Playgroud)

我试过这3行:

subset(A, TRUE, select=(A[3:7,] > B[3:7,]))
subset(A, A > B)
A[A[3:7,] > B[3:7,]]
Run Code Online (Sandbox Code Playgroud)

非常感谢.以下是生成数据的代码:

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")
Run Code Online (Sandbox Code Playgroud) #############跟进问题于2013年2月28日提出

基于R中不同数据帧的调整值进行子集化时出错

red*_*ode 5

N <- nrow(A)
cond <- sapply(3:N, function(i) sum(A[i,] > B[i,])==2)
rbind(A[1:2,], subset(A[3:N,], cond))
Run Code Online (Sandbox Code Playgroud)