8

次のような .csv ファイルとして保存されたデータ セットがあります。

Name,Age,Password
John,9,\i1iiu1h8
Kelly,20,\771jk8
Bob,33,\kljhjj

RI では、次の方法でこのファイルを開くことができます。

X = read.csv("file.csv",header=TRUE)

数値変数と文字列変数の両方を含む .csv ファイルを読み取る Matlab の既定のコマンドはありますか? csvread数値変数のみが好きなようです。

さらに一歩進んで、RI では attach 関数を使用して、データセットの列と列ヘッダーに関連付けられた変数を作成できます。つまり、

attach(X)

Matlabに似たようなものはありますか?

4

3 に答える 3

6

この質問はほぼ完全に重複していますが、@NathanG が提供するリンクで提案されている解決策 (つまり、を使用xlsread) は、問題を解決するための 1 つの可能な方法にすぎません。リンクの作成者も を使用することを提案してtextscanいますが、その方法についての情報を提供していないため、ここに例を追加すると思いました。

%# First we need to get the header-line
fid1 = fopen('file.csv', 'r');
Header = fgetl(fid1);
fclose(fid1);

%# Convert Header to cell array
Header = regexp(Header, '([^,]*)', 'tokens');
Header = cat(2, Header{:});

%# Read in the data
fid1 = fopen('file.csv', 'r');
D = textscan(fid1, '%s%d%s', 'Delimiter', ',', 'HeaderLines', 1);
fclose(fid1);

Header各セルがヘッダーを格納するセルの行ベクトルになるはずです。Dはセルの行ベクトルで、各セルはデータの列を格納します。

Dに「アタッチ」することを知っている方法はありませんHeader。必要に応じて、両方を同じ構造に入れることもできます。つまり、次のようになります。

S.Header = Header;
S.Data = D;
于 2013-01-23T22:08:41.437 に答える
0

Matlab 2012 でサポートされているこのアプローチが気に入りました。

path='C:\folder1\folder2\';
data = 'data.csv';
data = dataset('xlsfile',sprintf('%s\%s', path,data));

もちろん、次のこともできます。

[data,path] = uigetfile('C:\folder1\folder2\*.csv');
data = dataset('xlsfile',sprintf('%s\%s', path,data));
于 2013-03-29T15:29:14.160 に答える