Summarize three-way table
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello,
I have a large dataset of patents by
year, region, type of patents, regional share.
2000 FR01 0 0.137
2000 FR01 1 0.135
2000 FR01 1 1
2000 FR02 0 0.144
2000 FR02 1 0.135
2000 FR02 1 1
2001 FR01 0 0.143
2001 FR01 1 0.135
2001 FR01 1 1
2001 FR02 0 0.155
2001 FR02 1 0.175
2001 FR02 1 1
.........................................................................................
I want to find the total of regional share for each region by year by type of patents.
I would appreciate if someone is able to help me.
Thank you.
댓글 수: 0
채택된 답변
Chunru
2021년 6월 30일
편집: Chunru
2021년 6월 30일
It could be something like this:
% Assume table (T) with these variables: year, region, type_of_patents, regional_share
% Find the total of regional share for each region by year by type of patents.
u_type_of_patents = unique(T.type_of_patents)
u_year = unique(T.year)
u_region = unique(T.region)
u_year = unique(T.year)
for ip = 1:length(u_type_of_patents)
for iy = 1:length(u_year)
for ir = 1:length(u_region)
totalshare=(sum(T.regional_share(...
T.type_of_patents==u_type_of_patents(ip) & ...
T.year==u_year(iy) & ...
T.region==u_region(ir) )));
%fprintf(...)
end
end
end
댓글 수: 5
Lei Hou
2021년 7월 1일
Hi Saptorshee,
Try the following and see whether the performance is better.
>> rowfun(@sum,t,"InputVariables","regional share",'GroupingVariables',["year" "type of patents" "region"],"OutputVariableNames","total region share")
ans =
8×5 table
year type of patents region GroupCount total region share
____ _______________ ________ __________ __________________
2000 0 {'FR01'} 1 0.137
2000 0 {'FR02'} 1 0.144
2000 1 {'FR01'} 2 1.135
2000 1 {'FR02'} 2 1.135
2001 0 {'FR01'} 1 0.143
2001 0 {'FR02'} 1 0.155
2001 1 {'FR01'} 2 1.135
2001 1 {'FR02'} 2 1.175
Thanks,
Lei
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!