MATLAB Answers

dataset内での累積和

2 views (last 30 days)
Eisaku Takahashi
Eisaku Takahashi on 16 Jun 2019
Answered: Eisaku Takahashi on 19 Jun 2019
dataset内での累積和の求め方はどうすればよいのでしょうか。sum(ファイル名)やcumsum(ファイル名)としてもできません。

  0 Comments

Sign in to comment.

Answers (3)

Yoshio
Yoshio on 16 Jun 2019
一旦ファイルから読み込んで、データセット配列として計算する方法があると思います。
をご参照ください。もし出来ない様でしたら、出来なかったコードを記載されると回答が得られるかも知れません。

  1 Comment

Eisaku Takahashi
Eisaku Takahashi on 16 Jun 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
データ型が無効です。最初の入力引数は数値または論理値でなければなりません。

Sign in to comment.


Shoumei
Shoumei on 17 Jun 2019
Edited: Shoumei on 18 Jun 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 Comments

Eisaku Takahashi
Eisaku Takahashi on 17 Jun 2019
ありがとうございます。
A = cumsum(ds.age)の計算結果が列で表示されるのですが、これはどんな計算を行っているのでしょうか。
A = sum(ds.age)で単にage列の合計は計算できました。
ds.new = cumsum(ds.age)でdsに新しい列として結果を代入することはできました。
Shoumei
Shoumei on 18 Jun 2019
コードの変数名が間違っていたので修正しました。
cumsum(ds.Test3)の計算内容ですが、ds内の変数Test3の累積和を計算しています。
マニュアルで書くとこうなります。
ds.Test3(1)
ds.Test3(1)+ds.Test3(2)
ds.Test3(1)+ds.Test3(2)+ds.Test3(3)
以下続く

Sign in to comment.


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

  0 Comments

Sign in to comment.

Sign in to answer this question.

Tags