我有两个dfs,都是昏暗的[1] 54 210
。一个(让我们称之为dfx
)包含1,0,以在测试中标记不正确和正确的答案。 dfy
包含每个问题的响应时间。我想(merge()
(可能)来自dfy
的{{1}}中{= 1}的所有项目。dfx
数据为宽格式,ID = rownames,列代表每个问题
示例:
DFX
Q1 Q2 Q3 Q4 Q5 …
1 1 1 1 1
1 1 1 1 1
1 1 0 1 1
1 1 0 1 1
DFY
Q1_3 Q2_3 Q3_3 Q4_3 Q5_3 ...
16.01 8.23 18.13 11.14 18.03
17.25 7.50 11.72 10.84 7.24
我需要dfz作为dfy的子集,如果dfx[Q1] == 1
,dfy [Q1_3]
将返回dfz[Q1_3]
,否则NA
或dfx[Q1]
(这是0)。
如果我按
指定cols,我可以这样做dfz<- cbind(ifelse(dfx$Q1 == 1, dfy$Q1_3, dfx$Q1))
但是我不知道如何将它应用于整个df。
有什么想法吗?
答案 0 :(得分:1)
如果两个数据框的大小相同,并且final
只有1和0,您可以将它们相乘以获得所需内容:
dfx
在下一条评论中,您询问如何根据其他数据框的值操纵数据框中的列。我经常使用sqldf
package来做这种事情。它允许您使用SQL指令操作数据帧。您需要一些dfz <- dfy * dfx
列,以便让您与数据框架相关联。
一个简单的例子:
id
如您所见,您可以像数据库中的表一样加入数据帧。
希望这有帮助。