楼主: huxiq
4787 8

[问答] 有关sas把只含有缺失值的变量删除遇到的问题 [推广有奖]

  • 1关注
  • 0粉丝

初中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
245 点
帖子
18
精华
0
在线时间
16 小时
注册时间
2015-5-31
最后登录
2018-12-21

楼主
huxiq 学生认证  发表于 2015-6-23 23:15:39 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

data crackman;

input Account_ID Revenue Segment$ N_var1 C_var1$ Transaction_Date yymmdd10. Transaction_Location$ Transaction_Code$ Transaction_Amount;

cards;

10001,5,G1,., ,2014-10-23,CHINA,APP_001,100

10002,6,G1,., ,2014-10-23,CHINA,APP_002,110

10003,6.5,G1,., ,2014-10-23,CHINA,APP_003,50

10004,10,G2,., ,2014-10-23,CHINA,APP_004,90

10005,15,G2,., ,2014-10-23,CHINA,CAN_005,12

10006,13,G2,., ,2014-10-23,CHINA,MAN_006,10000

10007,10.6,G2,., ,2014-10-23,CHINA,APP_007,10

10008,20,G3,., ,2014-10-23,CHINA,APP_008,100

10009,25,G3,., ,2014-10-23,CHINA,APP_009,200

10010,15.5,G3,., ,2014-10-23, ,REJ_010,100000

10010,15.5,G3,., ,2014-10-23, ,REJ_010,100000

10010,10.0,G4,., ,2014-10-23, ,REJ_010,100000

10010,20.0,G5,., ,2014-10-23, ,REJ_010,100000

10003,7,G1,., ,2014-10-24,CHINA,MAN_003,50000

10004,9,G2,., ,2014-10-24,CHINA,APP_004,90

10006,6,G2,., ,2014-10-24,CHINA,MAN_006,1000

10007,10.6,G2,., ,2014-10-24,CHINA,APP_007,10

10008,8,G3,., ,2014-10-24,CHINA,APP_008,100

10009,9,G3,., ,2014-10-24,CHINA,APP_009,200

10010,15.5,G3,., ,2014-10-24,CHINA,APP_010,100

10010,10,G4,., ,2014-10-24,CHINA,APP_011,101

10010,20,G5,., ,2014-10-24,CHINA,APP_012,102

;

run;

proc transpose data=crackman out=a;

var _all_;

run;

data a;

set a;

array col col1-co22;

do over col;

if col=. then delete;

end;

run;

proc transpose data=a out=crackman(drop=_name_);

var col1-col22;

run;

proc print;

run;

这是我运行的代码,不过编辑日志显示一些数据输入无效, Revenue变量是我在基于上一道题进行均值填充(按segment分类再分别计算均值然后再输入进去的),不知道是不是这样的做法有误,导致程序很多都运行不出来,输出的结果如下,对sas还处于刚入门阶段,希望有人能解答一下我的疑惑。

Obs

_NAME_

COL1

COL2

COL3

COL4

COL5

COL6

1

Account_ID

.

.

.

.

.

.

2

Revenue

.

.

.

.

.

.

3

Segment

10002,6,

10006,13

10010,15

,REJ_010

10006,6,

10010,15

4

N_var1

.

.

.

.

.

.

5

C_var1

10003,6.

10007,10

,REJ_010

,2014-10

10007,10

10010,10

6

Transaction_Date

.

.

.

.

.

.

7

Transaction_Location

3,CHINA,

3,CHINA,

10010,15

00000

4,CHINA,

4,CHINA,

8

Transaction_Code

10004,10

10008,20

,2014-10

10003,7,

10008,8,

10010,20

9

Transaction_Amount

.

.

.

.

.

.

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:缺失值 Transaction Transpose crackman Location

我不是很明白你在做什么 但是你第一步input data就有问题了  
数据是以逗号分隔的 需要在 data crackman; 下面加上

infile cards dlm=",";  

使用道具

藤椅
huxiq 学生认证  发表于 2015-6-24 12:24:24 |只看作者 |坛友微信交流群
sas那个石家庄人 发表于 2015-6-24 11:07
我不是很明白你在做什么 但是你第一步input data就有问题了  
数据是以逗号分隔的 需要在 data crackman;  ...
谢谢,我知道我问题出在哪里了

使用道具

板凳
huxiq 学生认证  发表于 2015-6-24 12:44:26 |只看作者 |坛友微信交流群
我改了一下还是出现了问题:

data crackman;
infile cards dlm=",";  
input Account_ID Revenue Segment$ Nvar1 Cvar1 Transaction_Date yymmdd10. Transaction_Location$ Transaction_Code$ Transaction_Amount;
cards;
10001,5,G1,., ,2014-10-23,CHINA,APP_001,100
10002,6,G1,., ,2014-10-23,CHINA,APP_002,110
10003,6.5,G1,., ,2014-10-23,CHINA,APP_003,50
10004,10,G2,., ,2014-10-23,CHINA,APP_004,90
10005,15,G2,., ,2014-10-23,CHINA,CAN_005,12
10006,13,G2,., ,2014-10-23,CHINA,MAN_006,10000
10007,10.6,G2,., ,2014-10-23,CHINA,APP_007,10
10008,20,G3,., ,2014-10-23,CHINA,APP_008,100
10009,25,G3,., ,2014-10-23,CHINA,APP_009,200
10010,15.5,G3,., ,2014-10-23, ,REJ_010,100000
10010,15.5,G3,., ,2014-10-23, ,REJ_010,100000
10010,10.0,G4,., ,2014-10-23, ,REJ_010,100000
10010,20.0,G5,., ,2014-10-23, ,REJ_010,100000
10003,7,G1,., ,2014-10-24,CHINA,MAN_003,50000
10004,9,G2,., ,2014-10-24,CHINA,APP_004,90
10006,6,G2,., ,2014-10-24,CHINA,MAN_006,1000
10007,10.6,G2,., ,2014-10-24,CHINA,APP_007,10
10008,8,G3,., ,2014-10-24,CHINA,APP_008,100
10009,9,G3,., ,2014-10-24,CHINA,APP_009,200
10010,15.5,G3,., ,2014-10-24,CHINA,APP_010,100
10010,10,G4,., ,2014-10-24,CHINA,APP_011,101
10010,20,G5,., ,2014-10-24,CHINA,APP_012,102
;
run;
proc transpose data=crackman out=a;
var _all_;
run;
data a;
set a;
array col col1-co22;
do over col;
if col=. then delete;
end;
run;
proc transpose data=a out=crackman(drop=_name_);
var col1-col22;
run;
proc print;
run;
日志显示“按字母排序的列举变量(col1-col22)前缀不同。
我参考的是论坛里的代码,我的理解是主要是先对矩阵进行转置,转置后有22列,如果有一列全部为缺失值,则删除那一列,可我不明白的是为什么还要转置,转置后删除的那一列不应该是一组观察值吗?
对sas还属于白痴阶段,问题可能让人看不明白,恳请谅解。

使用道具

huxiq 发表于 2015-6-24 12:44
我改了一下还是出现了问题:

data crackman;
你上面array那 写的是 col1-co22 前缀不一样。。。

使用道具

地板
huxiq 学生认证  发表于 2015-6-24 14:00:11 |只看作者 |坛友微信交流群
sas那个石家庄人 发表于 2015-6-24 13:04
你上面array那 写的是 col1-co22 前缀不一样。。。
我删掉了col1-col22,不过日志显示array那一行“ 语法错误,期望下列之一:名称_All_,_CHARACTER_,_CHAR_,_NUMERIC_,不好意思,问题太多。

使用道具

huxiq 发表于 2015-6-24 14:00
我删掉了col1-col22,不过日志显示array那一行“ 语法错误,期望下列之一:名称_All_,_CHARACTER_,_CHAR ...
哎呀 我不是这个意思。。。 col1-co22 前缀不一样 改成 col1-col22 再试试

col 和 co  不一样的啊

使用道具

8
huxiq 学生认证  发表于 2015-6-24 15:57:43 |只看作者 |坛友微信交流群
sas那个石家庄人 发表于 2015-6-24 15:23
哎呀 我不是这个意思。。。 col1-co22 前缀不一样 改成 col1-col22 再试试

col 和 co  不一样的啊
谢谢大侠!!太感动了!!终于运行出来了!!

使用道具

huxiq 发表于 2015-6-24 15:57
谢谢大侠!!太感动了!!终于运行出来了!!
其实都是小问题 细心点就好了~

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 15:45