#matplotlib
#matplotlib
Вопрос:
У меня есть таблица, которая выглядит следующим образом:
firm id year profit
1 2000 10
1 2001 20
1 2002 15
2 1999 40
2 2000 55
2 2001 35
2 2002 65
3 2001 5
3 2002 20
3 2003 10
И я хочу оценить размер прибыли фирмы за последние годы.
Ответ №1:
Предполагая, что ваша таблица уже отсортирована по «Идентификатору фирмы» и по «Году», и что для каждого года есть только одна запись, вы можете перебирать каждую фирму:
profitVar = [];
ids = unique(yourTable.firmId); % id of each firm
% Loop through the firms
for i = 1:length(ids)
id = ids(i);
subData = find(yourTable.firmId == id); % get the data from the given firm only
% Loop through the years
for j = 1:length(subData)
profitVar = [profitVar; var(yourTable.profit(subData(1:j-1)))];
end
end
yourTable = addvars(yourTable, profitVar);
Обратите внимание, что это возвращает NaN только за первый год, а не за второй год из-за того, что он вычисляет дисперсию предыдущего (которая, таким образом, всегда будет равна нулю). Если это проблема, вы можете просто вставить исключение во внутренний цикл, что-то вроде if (j == 2) profitVar = [profitVar; NaN];
.
Комментарии:
1. Спасибо, Маттео!
2. Если этот ответ сработал для вас, пожалуйста, примите его; наоборот, если чего-то не хватает, дайте мне знать.