SAS中文论坛
标题:
各位大侠,请教一个关于如何为营养素计算编程的问题
[打印本页]
作者:
shiyiming
时间:
2005-7-28 20:47
标题:
各位大侠,请教一个关于如何为营养素计算编程的问题
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D --> <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
各位大侠,我要计算每个研究对象一天中各种营养素摄入量,有两个数据库,第一个是研究对象一天中食物摄入量的数据库,变量sequence是研究对象编号,food1 food2 food3分别表示该研究对象一天中相应食物的摄入量(g),如下
sequence food2 food4 food5
01 195 125 136
02 268 248 362
03 172 216 127
04 238 215 149
05 264 371 356
第二个数据库是营养素数据库,fooditem表示食物编号,fat protein fiber分别表示每种食物每100g含有相应营养素的量,如下
fooditem fat protein fiber
food1 13 21 2.5
food2 1.7 14 1.3
food3 0.9 25 4.3
food4 3.6 15 5.6
food5 0.4 13 2.6
food6 1.9 9.6 8.3
我的思路是将第二个营养素数据库进行转置,以食物编号作列变量,以营养素作行变量,然后将两个数据库合并,用食物摄入量乘以该食物中的各种营养素含量,最终求出营养素摄入量。
但是我试了几种方法,两个数据库合并的都不理想,各位大侠,有没有什么好办法,希望不吝赐教,谢谢。
作者:
shiyiming
时间:
2005-7-28 22:24
标题:
不是最好的办法, 但是一条解决途径
*步骤1;
data a;
input sequence food2 food4 food5 ;
cards;
01 195 125 136
02 268 248 362
03 172 216 127
04 238 215 149
05 264 371 356
;
data a1; set a;
array food(3) food2 food4 food5;
do i=1 to 3 ;
foodno=i; foodwt=food(i); output;
end;
keep sequence foodno foodwt;
run;
proc sort; by foodno; run;
proc print; run;
*步骤2;
data b;
input fooditem $ fat protein fiber;
cards;
food1 13 21 2.5
food2 1.7 14 1.3
food3 0.9 25 4.3
food4 3.6 15 5.6
food5 0.4 13 2.6
food6 1.9 9.6 8.3
;
data b1;
set b;
foodno=substr(fooditem,5)*1;
run;
proc sort; by foodno; run;
proc print; run;
data c; merge a1 b1; by foodno; run;
proc print; run;
*步骤3:
再利用乘法 求每个对象各种食物营养素摄入量, 然后利用means过程或report 过程对每个对象全部食物营养素摄入量纵向求和.
作者:
shiyiming
时间:
2005-8-2 16:38
标题:
向热心的人们敬礼
好办法 谢谢 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2