格式化数据

时间:2014-07-08 23:28:07

标签: mysql octave

我有这种格式的数据。价值是每年。

countryname 1990 1991 1992是列的名称。

尼泊尔5 10 15;印度20 25 30是行。

我想将这些数据转换为使用MYSQL查询的格式,或者只是如下所示的八度 -

countryname年份值必须是列。 行应该是这样的:尼泊尔1990年5;尼泊尔1991年10年;尼泊尔1992年15年;印度1990年5月;

1 个答案:

答案 0 :(得分:0)

假设您的列名实际上是1990y1991y等(因为您不能使用普通数字作为列名),那么您可以使用SQL获取所需的表:

SELECT countryname, 1990, 1990y FROM yourTable
UNION
SELECT countryname, 1991, 1991y FROM yourTable
UNION
SELECT countryname, 1992, 1992y FROM yourTable

在Octave,您可以这样做:

n = size(data, 1);
norm_data = [];
for y = 1990:1992
    N(:,1) = data(:,1);
    N(:,2) = y;
    N(:,3) = data(:,y-1990+2);
    norm_data(end:end+n,:) = N;
end