我有一个这样的文件:
ID LHW dms
1 105.28 1
2 357.01 0
3 150.23 3
我的问题是,是否可以根据标题获得一个列值?我当然可以通过其列位置2获得LHW
,但我想通过阅读LHW
来获得它。
这样做的原因是我有两个大型数据集(约50 000 rows x 80 columns
)具有相同的变量,但位于不同的位置。如果我能根据标题得到正确的列值,那么可以节省大量的编程时间。
提前致谢!
答案 0 :(得分:2)
我不知道您的目的是否存在某些内置函数。但我们可以手动创建它。例如:
function [result] = readByName( A, filename )
if ~ischar(A) % check input parameter (you can delete this sectionif you want)
display('Error: First argument must be a char array!');
massiv = -1;
return
end
fileID = fopen(filename); % open file
title = textscan(fileID, '%s',3); % read title
number = cellfun( @(x) strcmp(x,A), title{1}); % find wanted column
if ~any(number) % one more check
display('Error: wrong name of the first argument');
massiv = -1;
return
end
data = textscan(fileID, '%f %f %f'); % read data
result = data{ number==1 }; % get wanted column
end
其实施示例:
readByName('ID', 'yourdata.txt')
答案:
ans =
1
2
3
现在您只需按名称加载数据即可。现在,如果您的列名相同,则需要对其进行一些修改。
希望它有所帮助!