0

私は MATLAB を初めて使用します。私は現在、このデータセットをmatlabに持っています

company     date                    EDF
A           01/01/1990              0.1
A           02/01/1991              0.25
A           02/01/1992              0.4
B           02/01/1991              1.1
B           03/01/1992              1.65
C           01/01/1990              0.78
C           02/01/1991              0.89
C           02/01/1992              0.90
C           01/02/1993              0.1

なるようにしたい

Date             A         B           C
01/01/1990      0.1                   0.78
02/01/1991      0.25      1.1         0.89
02/01/1992      0.4       1.65        0.90
01/02/1993                            0.1

MATLABでできると思います。それを行うためのコードを手伝ってもらえますか? ありがとうございました!

4

1 に答える 1

0

まず、textscan()を使用してファイルを読み取ります。

f = fopen('yourFileName.txt', 'r');
data = textscan(f, '%d %d %f', 'HeaderLines', 1, 'MultipleDelimsAsOne', 1, 'ReturnOnError', 0);
fclose(f);

次に、年を取得します

years = unique(data{2});

ここで、EDF 値を生成します

edf = zeros(length(years), length(unique(data{1})))
for i = 1 : length(data{1})
    edf(find(years == data{2}(i)), data{1}(i)) = data{3}(i);
end

今、それらをファイルに書き込みます

f = fopen('newFile.txt', 'w');
fwrite(f, 'Date  Company1  Company2  Company3\n');
for i = 1 : length(years)
    fprintf(f, '%4d', years(i)); 
    fprintf(f, ' %9.2f', edf(i, :));
    fprintf(f, '\n');
end
fclose(f)

ここで、ゼロではなく空のエントリが本当に必要な場合は、fprintf ループに if 句を追加する必要があります。

于 2013-09-12T06:21:28.177 に答える