sas矩阵到具有变量名的数据集
我有以下矩阵:sas矩阵到具有变量名的数据集,sas,Sas,我有以下矩阵: 我想以以下格式将其转换为SAS数据集: lastname如果与前一个相同,并且我有数千个名字,则它将丢失。我该怎么做?您只能将平面文件导入SAS,因此您需要先清理一下标题 按照此处的说明清除顶部和侧面的空白“姓氏”: 一旦没有空格,我想将名字和姓氏连接到一个单元格中是最容易的。类似于=沿顶部连接(C1,C2)和=沿侧面连接(A4 | B4)的东西应该可以实现这一技巧 仅将连接的值复制并粘贴到其自身上,以删除公式。然后删除原始值 你应该以这样的方式结束: 现在,导入SAS并
我想以以下格式将其转换为SAS数据集:
lastname
如果与前一个相同,并且我有数千个名字,则它将丢失。我该怎么做?您只能将平面文件导入SAS,因此您需要先清理一下标题
按照此处的说明清除顶部和侧面的空白“姓氏”:
一旦没有空格,我想将名字和姓氏连接到一个单元格中是最容易的。类似于=沿顶部连接(C1,C2)和=沿侧面连接(A4 | B4)的东西应该可以实现这一技巧
仅将连接的值复制并粘贴到其自身上,以删除公式。然后删除原始值
你应该以这样的方式结束:
现在,导入SAS并使用如下程序堆叠值:
PROC TRANSPOSE DATA = import_from_excel
OUT=data_stacked
;
BY Names;
VAR
lastname1firstname1
lastname1firstname2
lastname1firstname3
lastname1firstname4
lastname1firstname5
lastname2firstname1
lastname2firstname2
lastname2firstname3
lastname2firstname4
lastname2firstname5
;
RUN;
显然,您必须更改lastnameXfirstnameX值以匹配现有值,但这应该与从Excel复制和粘贴列一样简单
希望您没有太多的名称来压倒proc转置,但是清理并堆叠它是基本的想法。您可以告诉SAS导入没有名称的“矩阵”。这样既可以将名称作为数据读取,也可以强制所有变量为字符串。所以基本上你会得到类似于这个数据集的东西
data have ;
length f1-f6 $32 ;
infile cards dsd truncover ;
input f1-f6 ;
cards;
,,L1,,L2
,,F1,F2,F3,F4
,,,,,,
L3,F5,1,2,3,4
,F6,5,6,7,8
L4,F7,9,10,11,12
,F8,13,14,15,16
;;;;
然后,您可以处理数据集并生成from/to name变量。首先创建一个引用所有变量的数组。然后创建两个临时数组来存储列标题名称。然后,当您读取每一行时,您可以从该行中找到名称和值并输出它们
data want ;
set have nobs=nobs ;
array x _character_ ;
array ln (200) $32 _temporary_;
array fn (200) $32 _temporary_;
length from_lastn lag_lastn from_firstn to_lastn to_firstn $32 ;
from_lastn = coalescec(x(1),lag_lastn);
lag_lastn = from_lastn ;
retain lag_lastn ;
from_firstn = x(2) ;
if _n_=1 then do i=3 to dim(x) ;
ln(i)=coalescec(x(i),ln(i-1));
end;
if _n_=2 then do i=3 to dim(x) ;
fn(i)=x(i);
end;
if _n_>3 then do i=3 to dim(x) ;
to_lastn = ln(i);
to_firstn= fn(i);
value=input(x(i),comma32.);
output;
end;
keep from_lastn from_firstn to_lastn to_firstn value ;
run;
是什么创造了矩阵?矩阵的图片是打印输出吗?你说的矩阵-你是指SAS IML矩阵还是Excel中的矩阵格式?如果是Excel,您是否已将其导入SAS?这很可能是第一个观察结转问题,需要您使用retain。要遵守SO规则,请发布您尝试过的内容。这是excel中的一个矩阵,我还没有将其导入sas,不确定如何将其读入sas,以便将其转换为我需要的格式。您的列标题看起来向左移动了一列。