我有两个数据帧
df1
i1 i2 i3
p1 1 1 1
p2 0 1 1
p3 0 0 1
df2
p1 p2 p3
site1 0 0 1
site2 4 1 10
site3 15 0 0
现在我想在df2中为每个站点创建一个数据帧列表 . 数据帧应仅包含来自df1的行,这些行在df2中且大于0 .
对于 example ,我的列表中的新df应为:
site1: i1 i2 i3
p3 0 0 1
site2: i1 i2 i3
p1 1 1 1
p2 0 1 1
p3 0 0 1
site3: i1 i2 i3
p1 1 1 1
除了列表问题,我不能让R在df1中选择正确的行 . 到目前为止我所做的是使用%in%
test<-df1[df1[,1] %in% (df2[1,-1]>0),]
它给了我<0行>(或0长度row.names)的colnames(df1)
有谁知道我哪里出错了?我不知道我是否可以以某种方式使用合并,因为我需要检查正确的colname和值> 0 .
1 回答
我想你应该
which
而不是%in%
. 让我们定义一个函数,用于对任何特定行执行此操作:现在我们使用
apply
在df2中的所有行上执行上述功能 .