dataset内での累積和

dataset内での累積和の求め方はどうすればよいのでしょうか。sum(ファイル名)やcumsum(ファイル名)としてもできません。

Answers (3)

Yoshio
Yoshio on 16 Jun 2019

0 votes

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

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

0 votes

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 votes

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

Tags

Asked:

on 16 Jun 2019

Answered:

on 19 Jun 2019

Community Treasure Hunt

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

Start Hunting!