全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1076 1
2016-10-27
各位老师好,
请问如何将取值凌乱的9个食物(字符)及供应量(数值)转为规范的7类食物及供应量?谢谢!

具体:
9个取值不规范的变量分别为food1-food9(详见下方“食物分类取值如何规范化.xlsx”,生成数据集gcb1)及其相应的数量(effective1-effective9);
7个取值规范的变量分别为type1-type7及其数量num1-num7,
type1=粮谷类(例如:food1-food9中凡是米、面、粉等的则归为type1,且相应蔬菜的数量相加得到num1),
type2=蔬菜(例如:food1-food9中凡是蔬菜的则归为type2,且相应蔬菜的数量相加得到num2),
type3=禽畜肉,
type4=鸡蛋,
type5=豆腐,
type6=牛奶,
type7=植物油,
type2-type7的定义与type1&type2的雷同.

每一条观测中的type1-type7不要有重复的,
有重复的则要将供应量求和后,
删除多余的取值。
附件列表

食物分类取值如何规范化.xlsx

大小:16.44 KB

 马上下载

food1-9,effective1-9

二维码

扫码加我 拉你入群

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

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

全部回复
2016-10-27 16:55:00
这个问题已解决.
由gcb1(食物分类取值如何规范化.xlsx生成的)生成gcb2的的code:

data gcb2;
    set gcb1;

    array food(9) food1-food9;
    do i = 1 to 9;
        if kindexc(food(i),"菜","瓜","竹","柿","葱","蒜","卜","椒","菇","姜")  then food(i)="蔬菜";
        else if kindexc(food(i),"肉","骨","脚","腿","翅","鱼","尖")  then food(i)="禽畜肉";
        else if kindexc(food(i),"面","米","粉","包") then food(i)="粮谷类";
        else if kindexc(food(i),"蛋")  then food(i)="鸡蛋";
        else if kindexc(food(i),"奶")  then food(i)="牛奶";
        else if kindexc(food(i),"油")  then food(i)="植物油";
        else if indexc(food(i),"盐")  then food(i)="盐";
        else if indexc(food(i),"抽") then food(i)="生抽";
    end;
     run;


之前出错:将indexc()混为kindexc(),
indexc()只能输出字节所在的位置,
而kindexc()是能输出单个(如果是词也只识别该次第一个字)汉字所在的位置(或者可理解为该函数是识别汉字的).
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群