dataset内での累積和

1 vue (au cours des 30 derniers jours)
Eisaku Takahashi
Eisaku Takahashi le 16 Juin 2019
dataset内での累積和の求め方はどうすればよいのでしょうか。sum(ファイル名)やcumsum(ファイル名)としてもできません。

Réponses (3)

Yoshio
Yoshio le 16 Juin 2019
一旦ファイルから読み込んで、データセット配列として計算する方法があると思います。
をご参照ください。もし出来ない様でしたら、出来なかったコードを記載されると回答が得られるかも知れません。
  1 commentaire
Eisaku Takahashi
Eisaku Takahashi le 16 Juin 2019
datasetは正しく読み込めているのですが、sum、cumsumもできません。
>> ds=dataset('xlsfile', 'test0616.xlsx');
警告: 有効な MATLAB 識別子になるように変数名が変更されました。
> In setvarnames (line 44)
In dataset/readXLSFile (line 50)
In dataset (line 357)
>> ds(1,6)
ans =
x_1_1
3
>> sum(ds)
エラー: sum
データ型が無効です。最初の引数は数値または論理値でなければなりません。
>> cumsum(ds)
エラー: cumsum
データ型が無効です。最初の入力引数は数値または論理値でなければなりません。

Connectez-vous pour commenter.


Shoumei
Shoumei le 17 Juin 2019
Modifié(e) : Shoumei le 18 Juin 2019
dsには数値データだけではなく、文字列を含む色んなデータが入っていると思いますので、sumやcumsumなどで演算することはできず、引数としては適切ではありません。
Yoshioさんのリンクの例にあるように、どこかの列だけを引数にしてやると結果が得られると思います。例えば、
ds = dataset('File','testScores.csv','Delimiter',',')
A = cumsum(ds.Test3)
で結果が表示されると思います。(変数ds内のage列を計算しています。)
dsに新しい列として結果を代入したければ
ds.new = cumsum(ds.Test3)
とします。
ワークスペースの変数dsをダブルクリックして、処理前後をご確認ください。
  2 commentaires
Eisaku Takahashi
Eisaku Takahashi le 17 Juin 2019
ありがとうございます。
A = cumsum(ds.age)の計算結果が列で表示されるのですが、これはどんな計算を行っているのでしょうか。
A = sum(ds.age)で単にage列の合計は計算できました。
ds.new = cumsum(ds.age)でdsに新しい列として結果を代入することはできました。
Shoumei
Shoumei le 18 Juin 2019
コードの変数名が間違っていたので修正しました。
cumsum(ds.Test3)の計算内容ですが、ds内の変数Test3の累積和を計算しています。
マニュアルで書くとこうなります。
ds.Test3(1)
ds.Test3(1)+ds.Test3(2)
ds.Test3(1)+ds.Test3(2)+ds.Test3(3)
以下続く

Connectez-vous pour commenter.


Eisaku Takahashi
Eisaku Takahashi le 19 Juin 2019
ご連絡ありがとうございます。
行の累積和を行いたいのですが、ヘルプページなどで探してみます。
ありがとうございます。

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!