将值从一个表复制到另一个表,仅在第二个表具有特定值的情况下

时间:2019-04-24 16:27:37

标签: r dplyr sapply

我认为这很简单,但是距离我查看R已经有一段时间了。

我有两个表,我想根据第二个表的值制作第一个表的表。 (我想要表1中的数字,只要表2中相应的行/列都为“ 1”)

我在想sapplylapply可能是我需要的东西,还是Why can’t I push log data to CloudWatch Logs with the awslogs agent?中的东西?只是不确定如何。

表1(df1):

row  sample.1  sample.2  sample.3
1       55       6788      4003
2     9000        135      1200
3     3400       2000      7500
4       92        348       227  
5     4286       2731      6298

表2(df2):

row  sample.1  sample.2  sample.3
1        0          1         1
2        1          0         0
3        1          1         1
4        0          0         0  
5        1          1         1

表3(df3-所需输出):

row  sample.1  sample.2  sample.3
1        0       6788      4003
2     9000          0         0
3     3400       2000      7500
4        0          0         0  
5     4286       2731      6298

1 个答案:

答案 0 :(得分:3)

一个更简单的选择是逐元素乘法,因为它们是数字列,并且任何乘以0的数字都将返回0,而乘以1的数字将返回数字本身(假设两个数据集的维数相同

df1 * df2

如果“行”是第一列,则通过删除任何数据集的第一列和第一列的cbind来对数据集进行子集化

cbind(df1[1], df1[-1] * df2[-1])