楼主: 眼睛花
5277 14

[原创博文] 求观测作求和和判断的语句 [推广有奖]

  • 6关注
  • 0粉丝

大专生

36%

还不是VIP/贵宾

-

威望
0
论坛币
1292 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
667 点
帖子
49
精华
0
在线时间
28 小时
注册时间
2010-12-20
最后登录
2016-5-3

楼主
眼睛花 发表于 2011-4-26 19:49:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问有没方法对SAS数据集中的观测作求和和判断的语句;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
案例如下:
Code spending
1111 38
2222 40
3333 27
4444 55
5555 60
6666 70
7777 80
8888 90
9999  10
1122 11
1133 12
1144 13
1155 14
1166 15
1177 16
2277 16.3
2288 17.4
3399  29.8
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
要求在观测数据spending中求和数值,假设求和数值满足=100输出这两条观测。
尝试过用retain 操作过,能够求和,但不能输出是哪几个观测求和得出。

请高手看看这种该怎么用语句去写?
二维码

扫码加我 拉你入群

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

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

关键词:SPENDING ending RETAIN sas数据集 Spend

回帖推荐

sas_user 发表于9楼  查看完整内容

data test; input code spending; datalines; 1111 38 2222 40 3333 27 4444 55 5555 60 6666 70 7777 80 8888 90 9999 10 1122 11 1133 12 1144 13 1155 14 1166 15 1177 16 2277 16.3 2288 17.4 3399 29.8 ; run; proc sql; create table x as select a.code as a , b.code as b , a.spending as a_spending, b.spending as b_spending, sum(a.spending,b.spending) as sum from test a, test b wh ...
已有 1 人评分热心指数 收起 理由
crackman + 1 鼓励积极发帖讨论

总评分: 热心指数 + 1   查看全部评分

本帖被以下文库推荐

沙发
眼睛花 发表于 2011-4-27 20:30:07
没人看吗?自己顶一下。

藤椅
baoaibaobao 发表于 2011-4-27 22:05:49
眼睛花 发表于 2011-4-27 20:30
没人看吗?自己顶一下。
没明白的意思!求和后再怎么着~

板凳
眼睛花 发表于 2011-4-28 23:26:49
3# baoaibaobao
其实就是B数据,B1+Bn=100满足的话;输出:返回那几条相加得出的数据集。

报纸
眼睛花 发表于 2011-4-28 23:32:53
再这里稍微描述下结果。
-----------------------------------------------------------------
根据以上数据情况求出;
2222 40
5555 60
----------------------------------------------------------------
类似这样的结果数据集。

地板
ntsean 发表于 2011-4-29 01:50:07
用sql很容易

proc sql;
select a.code, a.spending,b.code, b.spending
from test a, test b
where a.spending+b.spending=100;
quit;

7
眼睛花 发表于 2011-5-9 23:01:12
6# ntsean
哥哥你的思路我没搞明白
TEST a和TEST b
问题一:你是使用同一数据集的数据还是有截取?是否有相同CODE的数据被相加?
问题二:通过使用求和的方法,目的是希望知道数据中,有多少相加的数据满足条件等于100,但不会被重复计算。

8
ntsean 发表于 2011-5-10 05:37:02
test a 和 test b 是sql的语句意思是 test当作a, test又当作b
所以a, b指的都是test,你可以看作a拷贝了test,b也拷贝了test,两个新数据
眼睛花 发表于 2011-5-9 23:01
6# ntsean
哥哥你的思路我没搞明白
TEST a和TEST b
问题一:你是使用同一数据集的数据还是有截取?是否有相同CODE的数据被相加?
问题二:通过使用求和的方法,目的是希望知道数据中,有多少相加的数据满足条件等于100,但不会被重复计算。

9
sas_user 发表于 2011-5-10 06:48:04
data test;
input code spending;
datalines;
1111 38
2222 40
3333 27
4444 55
5555 60
6666 70
7777 80
8888 90
9999 10
1122 11
1133 12
1144 13
1155 14
1166 15
1177 16
2277 16.3
2288 17.4
3399  29.8
;
run;


proc sql;
create table x as select a.code as a , b.code as b , a.spending as a_spending, b.spending as b_spending, sum(a.spending,b.spending) as sum from test a, test b where a.spending+b.spending=100;
quit;

data y;
        set x;
                if lag(a)=b then delete;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

10
wb8686 发表于 2011-5-10 09:18:21
data b;
set a nobs=obs;
do i=1 to obs;
set d(rename=(Code=Code1 spending=spending1)) point=i;
if spending+spending1=100 then output;
end;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 08:44