Сумма значений переменных по группам, за исключением определенных значений, обусловленных другой переменной.Как сделать это элегантно без транспонирования?Поэтому в приведенной ниже таблице для каждого (fTicker, DATE_f) я стремлюсь суммировать значения wght со значением wght , обусловленным sTicker, исключенным из суммы.
В таблице ниже (excl_val, sTicker = A) | (fTicker = XLK, DATE_f = 6/20/2003) = wght_AAPL_6 / 20 / 2003_XLK + wght_AA_6 / 20 / 2003_XLK, но не вес для sTicker = A
+---------+---------+-----------+-------------+-------------+
| sTicker | fTicker | DATE_f | wght | excl_val |
+---------+---------+-----------+-------------+-------------+
| A | XLK | 6/20/2003 | 0.087600002 | 1.980834016 |
| A | XLK | 6/23/2003 | 0.08585 | 1.898560068 |
| A | XLK | 6/24/2003 | 0.085500002 | |
| AAPL | XLK | 6/20/2003 | 0.070080002 | |
| AAPL | XLK | 6/23/2003 | 0.06868 | |
| AAPL | XLK | 6/24/2003 | 0.068400002 | |
| AA | XLK | 6/20/2003 | 1.910754014 | |
| AA | XLK | 6/23/2003 | 1.829880067 | |
| AA | XLK | 6/24/2003 | 1.819775 | |
| | | | | |
| | | | | |
+---------+---------+-----------+-------------+-------------+
Существует несколько групп fTicker с большим количеством sTicker (от 10 до 70), некоторые sTicker могут принадлежать нескольким fTicker.Конечный результат должен быть excl_val для каждого sTicker для каждого DATE_f и для каждого fTicker.
Я сделал это путем транспонирования в SAS с результирующим файлом около 6 ГБ, но тот же подход в R, увеличил объем памяти до 40 ГБ, и это в основном неработоспособно.
В R я дошел до этого
weights$excl_val <- with(weights, aggregate(wght, list(fTicker, DATE_f), sum, na.rm=T))
, но это просто простая сумма (без исключения необходимого наблюдения), и есть несоответствие между длинами строк.Если бы я мог обусловить сумму, чтобы исключить sTicker obs для wght из суммирования, я думаю, что это могло бы сработать.
О длине excl_val: я вычислил ее в excel, всего для 2 ячеек, поэтому она короткая
Спасибо!
Арсенио