Копировать значения из одной таблицы в другую, только если вторая таблица имеет определенные значения - PullRequest
1 голос
/ 24 апреля 2019

Я думал, что это будет просто, но я давно не смотрел на R.

У меня есть две таблицы, и я хочу создать третью таблицу со значениями из первой на основе значений из второй. (Мне нужны числа из таблицы 1, каждый раз, когда соответствующая строка / столбец из таблицы 2 имеет «1»)

Я думал, что sapply или lapply, вероятно, будет то, что мне нужно, или что-то из ? Просто не знаю как.

Таблица 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 Ответ

3 голосов
/ 24 апреля 2019

Более простой вариант - поэлементное умножение, поскольку это числовые столбцы, и если любое число, умноженное на 0, возвращает 0, а умноженное на 1 - само число (при условии, что оба набора данных имеют одинаковые измерения

df1 * df2

Если 'строка' является первым столбцом, поднабор наборов данных путем удаления первого столбца и cbind с первым столбцом любого из наборов данных

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