2006 年から 2100 年のデータを含む .mat ファイルがあります。毎年、行数が異なります。2006 年の行数、2007 年の行数などを数える必要があります。
列ごとのセットアップは次のとおりです。年、月、日、緯度、経度 同じ年のエントリを含む行の数を数え、その情報を含む配列で配列を取得したいだけです。
for または while ループが機能するはずだと考えていますが、それを修正する方法がわかりません。
2006 年から 2100 年のデータを含む .mat ファイルがあります。毎年、行数が異なります。2006 年の行数、2007 年の行数などを数える必要があります。
列ごとのセットアップは次のとおりです。年、月、日、緯度、経度 同じ年のエントリを含む行の数を数え、その情報を含む配列で配列を取得したいだけです。
for または while ループが機能するはずだと考えていますが、それを修正する方法がわかりません。
データが数値行列であると仮定すると、次のことができます。
num_lines2006 = sum(data(:,1)==2006);
data2006 = data(data(:,1)==2006),:);
対応する年の行数を含む列を追加する場合は、ループを使用したソリューションを次に示します。
for k=size(data,1):-1:1
num_year(k,1) = sum(data(:,1)==data(k,1));
end
data = [data num_year];
ループなしのソリューションは次のとおりです。
[unq_year,~,idx] = unique(data(:,1),'stable');
num_year = grpstats(data(:,1),unq_year,@numel);
data = [data num_year(idx)];
数値エントリをカウントするには、使用したい場合がありますhistc
years = unique(data(:,1);
counts = histc(data(:,1),years);