Я новый пользователь SAS / SQL, и у меня есть набор данных, в котором мне нужно перенести некоторые строки в столбцы. Я думаю, что есть более быстрый или простой способ сделать это, и я хотел бы дать вам всем совет. Мой пример лучше объяснит мою проблему:
Вот набор данных, который у меня есть:
Month ID Car Claim_Type Cost_of_claim
1 1243 Ferrari Collision 12,000
2 6437 Peugeot Fire 50,000
5 0184 Citroen Stole 3,000
9 1930 Fiat Medical 1,000
3 2934 GM Liability 20,000
И мне нужно создать такой набор данных:
Month ID Car Collision Fire Stole Medical Liability
1 1243 Ferrari 12,000 0 0 0 0
2 6437 Peugeot 0 50,000 0 0 0
5 0184 Citroen 0 0 3,000 0 0
9 1930 Fiat 0 0 0 1,000 0
3 2934 GM 0 0 0 0 20,000
Я просто переставил несколько строк в столбцы ...
Я думал сделать что-то подобное, чтобы создать свой новый набор данных:
proc sql;
select Month, ID, CAR
case when Claim_Type = 'Collision' then Cost_of_claim end Collision,
case when Claim_Type = 'Fire' then Cost_of_claim end Fire,
case when Claim_Type = 'Stole' then Cost_of_claim end Stole,
case when Claim_Type = 'Medical' then Cost_of_claim end Medical,
case when Claim_Type = 'Liability' then Cost_of_claim end Liability
from my_table;
Проблема в том, что у вас огромное количество данных, и я думаю, что этот способ может быть не слишком эффективным. Кроме того, в моем наборе данных гораздо больше столбцов и строк, и я не хочу вводить все возможности в операторах case when
, поскольку это не кажется простым (или удобным) для поддержки кода.
Может ли кто-нибудь помочь мне решить эту проблему?