Прикрепите значения к одной таблице из таблицы различной формы - PullRequest
1 голос
/ 28 марта 2020

Итак, у меня есть набор данных, собранный из опросов пчеловода, который выглядит примерно так:

[Table 1]
 ID | Crop | Year | Hives | HoneyP | CropP |
----+------+------+-------+--------+-------+
  1      2   2014    2391        .       .
  2      4   2008     136        .       .
  3     12   2019   12346        .       .

         |                    |
         V   (and so on...)   V

У меня также есть таблица цен на урожай за временной ряд, например,

[Table 2]
Year | Crop1 | Crop2 |
-----+-------+-------+
2008   $2.56   $6.45                    
2009   $2.42   $6.64                    ->
2010   $2.69   $6.68   (and more crops) ->
2011   $2.62   $7.05                    ->
...

Возможно ли в PSPP / SPSS выполнить итерации по наблюдениям в таблице 1 и вставить значения из таблицы 2 в переменную CropP на основе года и идентификатора урожая? Это то, что я себе представляю, в псевдокоде:

for each obs:
    obs.CropP = Table2[obs.Year][obs.Crop]

У меня также есть другие атрибуты, которые я хочу добавить к наблюдениям (например, индекс цен), но они все одномерные и могут вводиться вручную при необходимости; если я смогу программно добавить цену урожая в год проведения опроса, это сэкономит много времени и хлопот.

1 Ответ

1 голос
/ 29 марта 2020

Я предлагаю изменить форму вместо итерации. Предполагая, что вы прочитали обе таблицы в SPSS, а наборы данных называются table1 и table2 - выполните следующие два шага:

Сначала вам нужно изменить данные о ценах на культуры, чтобы они соответствовали основному набору данных:

dataset activate table2.
varstocases /make cropPR from crop1 to cropX/index=crop(cropPR).
*your crop index now is a string like "crop3" and needs to be turned into a number.
compute crop=char.substr(crop,5,5).
alter type crop (f5).
sort cases by year crop.

Теперь эта таблица готова к присоединению к вашим основным данным.

dataset activate table1.
sort cases by year crop.
match files /file=* /table=table1 /by year crop.
exe.
...