全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2016-12-26 13:52:13
正在读药物化学的硕士,所以对楼主的药物开发分期深有感触,只是这个专业对人体的危害实在是难以承受。
所以有想法借着医药背景转临床数据分析方向,对SAS programmer更感兴趣,目前也正在自学SAS。
看了前面,楼主是经济学出身,那么临床数据上应用SAS具体上有什么不同。或者说SAS的在临床数据分析上的应用更偏重哪方面。同时还需要一些什么其他的必要的背景知识么。就像前面提到的GCP之类的。对此,很感兴趣,在不耽误楼主时间的话,希望可以简单的说一说,谢谢啦。
二维码

扫码加我 拉你入群

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

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

2016-12-27 16:27:38
Adrian2Hope 发表于 2016-11-30 15:34
回复:找sas实习很容易呀。我当年考完那个base,在北京还在念书的时候就接到很多cro的实习职位。你要出去找 ...
能说说考base的相关事宜吗?明年毕业想从事的行业需要考sas base,希望大神指导一下报名的相关事宜,据说付款要用visa信用卡?考试时间随时可以?还有本人在沈阳上学,沈阳有考点吗?[em23]
二维码

扫码加我 拉你入群

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

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

2016-12-29 16:53:13
To 独木者:谢谢你的建议。像这些比较common的东西,毕竟自己总结的没那么好。以后类似这样的东西,我会加入自己的理解和说明。

To STGGA: 你说的“危害”这词,让我想起了一件事。在北京上班时,和一位不同工作岗位的女同事聊天得知:她中科院的,毕业直接呆在院里了,因此有了北京户口。然后就是天天做试验,合成,经常接触一些化学药品,对人体非常有害,时间长了,以后还说不定会发生什么。她说她受不了了,虽然有人仍然在坚守。然后来到现在这公司,各方面福利待遇也还可以之类的。大致内容是这些,反正只记得她当初说这些的时候,好像是忍了很久一样,然后来到现在公司,终于解脱了!我当时看着她的脸,哎。。。
所以,你说的那些,的确是存在的。这个社会,各有各的分工,我们做为高等动物的人类,当然也有趋利避害的本能。至于自己遇到这样的事情,就看有没有这样选择的必要和权利了。你可以先做些准备工作,比如看看sas,然后在网上找相关的工作机会。

To: luckyue: Base exam这个事情,论坛里有很多帖子,我相信对你应该有帮助。在有些分布了考点的城市,他们会帮你处理很多问题,你只要提供相关的材料就可以了。
二维码

扫码加我 拉你入群

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

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

2016-12-29 16:58:13
有精力和时间再继续更新,谢谢朋友们的回复!另外,用户名就是我的微信号。
二维码

扫码加我 拉你入群

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

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

2016-12-29 20:41:47
有不懂的程序可以请教么?
二维码

扫码加我 拉你入群

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

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

2016-12-29 21:33:33
Adrian2Hope 发表于 2016-11-29 14:06
如题。

我想如果有时间了,我会不定时地记录下我本人在这个行业的一些工作情况。或许有的时候就像一篇日 ...
继续赞!!
二维码

扫码加我 拉你入群

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

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

2016-12-29 22:44:29
Adrian2Hope 发表于 2016-12-29 16:58
有精力和时间再继续更新,谢谢朋友们的回复!另外,用户名就是我的微信号。
LZ东北财经大学的?
二维码

扫码加我 拉你入群

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

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

2017-1-3 10:03:25
最近在用用CDISC标准做一个I期的项目,虽然已经成功递交了,但真的是问题多多啊,楼主有时间了可以分享一下trial design的应用心得啊,或者我们可以互相交流一下。
二维码

扫码加我 拉你入群

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

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

2017-1-4 18:37:29
To Cordia: No。
To 游不动的小蛙:问题多是很正常的。你虽然deliver了,但后面肯定要多次修改的,每dry run一次,statistican/sponsor review一次,会有源源不断的comments。所以,在比较复杂的地方要写些comments,这样你后来也看得懂,给其他人改的话也比较readable。
关于I期的trail design,比较常见的是爬坡试验,先给低剂量的药,“符合要求了”,再入组病人,再慢慢加剂量。
二维码

扫码加我 拉你入群

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

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

2017-2-2 21:53:24
Adrian2Hope 发表于 2016-12-3 19:53
回复:hyquid
这位朋友,你好!JD里面说的SDTM是属于CDISC里面的内容,另外,它还有ADaM等等。关于CDISC, ...
谢谢楼主的分享。12月下旬拿到一家药厂外包公司的sas programmer的offer,二月中旬入职,完全是新手都不知道第一个礼拜进去要干嘛,是会拿一堆code来研读么?楼主分享的一些编程心得,比如proc sql用来merge,还有data step中创建衍生变量什么还是能看懂,但是总觉得没有实际自己操作过还是有点一知半解的样子。
那个关于药物开发的讲稿总结地真不错,第一次搞清了一期到四期都在干嘛……谢谢楼主!
二维码

扫码加我 拉你入群

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

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

2017-2-3 10:00:06
关注中,感谢楼主分享
二维码

扫码加我 拉你入群

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

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

2017-2-4 19:16:21
谢谢楼上朋友们的回复和夸奖。大家新年快乐!
其实一直都想更新的,可是天冷,人也懒。最重要的是觉得有压力了,不想轻易动手。昨晚还在想, 这毕竟不是写日记,是会有人看的,有人看就会有相应的品头论足。而我本人性格上是个完美主义者,特别是对于出自自己的东西。我记得大学有段时间学钢琴。老师跟我说,你不能啪的一下,弹出一个音就了事了。既然是你弹的,你就要对你手下的每个音“负责”,它的音准,强弱,长短等等。就像我写这个帖子一样,我既然做了,依然要对他负责。但本人能力有限,精力也有限,我只希望不要误导大家,如有不对、不妥之外,还希望大家海涵!今天是周末,还在公司,希望朋友们周末愉快!
二维码

扫码加我 拉你入群

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

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

2017-2-4 19:21:41
Adrian04Feb2017
Adverse Event TFL programming
SAP give details about AE TFLs(tables, listings, figures) display instruction. Please note that there will be inconsistent between SAP definition and shells configuration. Make sure they are the same, if not, put comments to leader programmer/statistics/client. For instance, SAP needs a summary ae table about leading to death, but this picture is not exist in shell, so at this time, confirmation is necessary. The following tips are general rules for TFL programming. It is a good habit to keep them in mind in our daily working scope. Also I will provide some reference codes to help understanding, and they are only the part of the programs. I strongly suggest you write codes by yourself once you get the idea.

1)        AE overall summary table
Attentions:
1.        The first column label usually contains follow items: any subject with at least one adverse event, serious adverse event, adverse event leading to death, adverse event related to study treatment. What you do is to select appropriate matched subjects and make small calculations.
2.        Safety Analysis (Adverse Events, Laboratory Data, Vital Signs…) use safety population, so SAFFL=’Y‘ is required when reading data from ADaM. Sometimes AETRTEM=’Y’ is also needed if All AEs is coded using MedDRA dictionary.

data adae;
  set adam.adae;
  where saffl = 'Y' and aetrtem = 'Y';
run;

3.        TFL codes will be different according to ADaM derivation. Generally, category flag variable is recommended to derive in ADaM, if not, we shall write by ourselves. Of course, another analysis indication variable like ANL01FL, ANL02FL….is required added in ADaM.

proc sql;
  create table aeall as
  select count(distinct usubjid) as count, 1 as row
  from adae;
  create table death as
  select count(distinct usubjid) as count, 2 as row
  from adae
  where aeout='FATAL'; /* dthfl='Y' */
quit;

4.        For table counts patients with any AEs, clause DISTINCT is used in PROC SQL;
5.        For events, then ignore it. Sometimes events is also required for summary and ‘n’, ‘(%)’, ‘Events’ should be concatenated into one variable to shown up.

**** Treatment-emergent Adverse Event for subjects level and events.;
proc sql;
  create table TOT as
    select count(distinct USUBJID) as CNT1, count(*) as CNT2, TRTPN
    from ADAE
    group by TRTPN;
  create table SOC as
    select count(distinct USUBJID) as CNT1, count(*) as CNT2, AEBODSYS, TRTPN
    from ADAE
        group by AEBODSYS, TRTPN;
  create table SOCPT as
    select count(distinct USUBJID) as CNT1, count(*) as CNT2, AEBODSYS, AEDECOD, TRTPN
    from ADAE
    group by AEBODSYS, AEDECOD, TRTPN;
quit;

6.        Table shell likes “n (%)”. Here “n” indicates category subjects, % =100*n/population. As Footnote says: n = Number of patients, Percentages are based on the total number of subjects in the safety population. If treatment arms are given, denominator will consider this analysis population by treatment. This value will be equal to “N=XX” in column title. Note TFLs are analyzed by treatment group usually.
7.        If population is a macro variable obtained in the prior programs, take highly notice this variable is a character value. So if you use it in next calculation, try to avoid the statements like this: IF COUNT=&TRTA THEN PCT=’100’. As the variable COUNT is numeric, there will be log issue “Convert…” after submit the codes. And this issue should be clear. Notice codes like “COUNT/&TRTA” is ok because SAS perform automatic mathematic calculation with no warning.

data final;
  set ae;
  length col1 $200;
  if count in (0 .) then col1 = '0';
  else col1 = strip(put(count,3.)) || ' (' || put(100*count/&n.,5.1) || ')';
  col1=tranwrd(col1,'100.0','100');
run;

2)        Adverse Events by System Organ Class and Preferred Term
Table shell like this:
Any Adverse Events
SOC1
PT1
PT2

SOC2
  …
Attentions:
1.        Sort by descending frequency of the total for SOC and preferred term within SOC. That is to say, first descending order by SOC, then descending order by PTs in each SOC. This display is help to review for statistics which AEs occurrence is mostly happen.

proc sql noprint;
        create table tot as
                select count(distinct usubjid) as count
                from adae;
        create table soc as
                select aebodsys, count(distinct usubjid) as count
                from adae
                group by aebodsys;
        create table pt as
                select aebodsys, aedecod, count(distinct usubjid) as count
                from adae
                group by aebodsys, aedecod;
quit;

data tab0;
        set tot soc pt;
run;

proc sort data = tab0;
        by aebodsys aedecod;
run;

data tab1;
        set tab0;
        by aebodsys aedecod;       
        length label $200. col1 $50.;
        **** Set order ****;
        retain group row;
        if first.aebodsys then group = count;
        if first.aedecod then row = count;
        if aebodsys = '' then label = 'Any subject with at least one Treatment-Emergent Adverse Event';
        else if aedecod = '' then label = aebodsys;
        else label = '^w^w' || aedecod;
run;

proc sort data = tab1 out = final;
        by descending group aebodsys descending row aedecod;
run;

2.        SOC uses AEBODSYS, PT uses AEBODSYS. If there are missing value of them due to unmatched AE coding, then setting to “Uncoded” is necessary to avoid empty row.

If aebodsys=’’ then aebodsys=’Uncoded’;

3.        Most of time there will be no records read in matched the table or listing, another explanation line is necessary to reflect this. So an empty data set with at least one row is required for report. Use &nodata in proc report procedure.

%let nodata=%str(No applicable data were reported);
proc sql noprint;
        select count(*) into:numobs from adae;
quit;

%if &numobs=0 %then %do;
proc sql;
        create table final
        (label char(200),
        col1 char(50),
        aebodsys char(200),
        aedecod char(200),
        group num,
        row num);
        insert into final
        set group=.;
quit;
%end;

%if &numobs=0 %then %do;
compute before page/style(lines)={just=c};
        line "";
        line "&nodata";
endcomp;
%end;

3)        Adverse Events by System Organ Class, Preferred Term, and Relationship to Study Treatment
Shell:
SOC/PT                         Relationship to Study Drug
Any Adverse Event Unrelated
Unlikely
Possible
Probable
SOC1
Overall
….
PT1

Attention:
1.        Note there is another column added into table, so two points need to consider: one is that if there is no subjects in certain relationship within SOC/PT, an empty line should be kept with “count=0” mapped. If there is no subjects included at treatment A and other treatment arm B is mapped with numbers, then set ‘0’ for arm A column.
2.        Two is that adding another group-by variable to summary the data in SQL statement.
3.        As for order rules, keep it the same as prior comments. It will be a little complicated for this sorting. For example, within a SOC/PT, count each subject in 4 relationship, and get summation of them, then use this value to sort order.
4.        Notice here the number of subjects within SOC/PT should be unique. That is to say, if a subject is in ‘Unlikely’, then it cannot be in ‘Prossible’.

**** Get number of subjects within SOC/PT for ordering ****;
**** XXXn is related dataset to hold subjects ****;

proc sort data=adae out=adae1 nodupkey;
        by aebodsys aedecod usubjid;
run;

proc sql;
  create table tot as
    select count(distinct usubjid) as count, areln
    from adae
    group by areln;
  create table totn as
    select count(distinct usubjid) as count
    from adae1;
  create table soc as
    select count(distinct usubjid) as count, aebodsys, areln
    from adae
        group by aebodsys, areln;
  create table socn as
    select count(distinct usubjid) as count, aebodsys
    from adae
        group by aebodsys;
  create table socpt as
    select count(distinct usubjid) as count, aebodsys, aedecod, areln
    from adae
    group by aebodsys, aedecod, areln;
  create table socptn as
    select count(distinct usubjid) as count, aebodsys, aedecod
    from adae
    group by aebodsys, aedecod;
quit;

4)        Adverse Events by System Organ Class, Preferred Term, and Maximum Severity
Shell:
SOC/PT                         Maximum Severity
Any Adverse Event
Mild
Moderate
Severe
SOC1
Overall
….
PT1


The core step is the same as 3). Just select another variable to analysis.
Attention:
1.        Generally, the maximum severity record will be used for display within SOC/PT. For example, if the same SOC/PT happen several times for one subject, first it is ‘Mild’, later it comes up with ‘Severe’, then we flag the maximum record for the latter one. If no flag variable is available in ADaM, then we will handle this in TFL programs.
2.        Sample codes:
**** Count once at the maximum severity for total.;
proc sort data = adae out = adae1 ;
  by usubjid asevn;
run;

data adae1;
  set adae1;
  by usubjid asevn;
  if last.usubjid;
run;
**** End ***;

**** Count once at the maximum severity per SOC.;
proc sort data = adae out = adae2;
  by aebodsys usubjid asevn;
run;

data adae2;
  set adae2;
  by aebodsys usubjid asevn;
  if last.usubjid;
run;
**** End ***;

**** Get dummy SOC-PT-SEV structure.;
proc sort data = tab0 out = dummy(keep = aebodsys aedecod) nodupkey;
        by aebodsys aedecod;
run;

data dummy;
        set dummy;
        do asevn = 1 to 3;
                output;
        end;
run;

data tab1;
        merge dummy tab0;
        by aebodsys aedecod asevn;
run;

Ok, that is all for common adverse event tables. And general rules here is widely used in other similar tables.
二维码

扫码加我 拉你入群

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

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

2017-2-7 15:52:01
楼主新年好,本人是大四学生,现在在上海一家cro做实习生,学习做tlf,医药方面的。本人英语较差,阅读和书写还可以,口语和听力不怎么样,sas编程算是比较有灵性(常用的会,复杂的不会用但能看懂)想问问楼主,以后我们这边工资待遇开始时候怎么样,有多少?还有就是怎么才能加工资。之前有听说有高级程序员,说是三年左右,那他们做的事跟我们做的一样么(我们现在大概是只学了做tlf)?
如果一样的话,那增加工资待遇的标准是什么?年龄资历?还是工作效率?
如果不一样的话,那我们在没成高级程序员之前的三年是不是就没有增加工资待遇的机会了?
希望楼主能回的详细点,刚入社会,比较迷茫。
二维码

扫码加我 拉你入群

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

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

2017-2-9 09:53:19
xsl1136343283 发表于 2017-2-7 15:52
楼主新年好,本人是大四学生,现在在上海一家cro做实习生,学习做tlf,医药方面的。本人英语较差,阅读和书 ...
本科大概5000-6000的样子吧,加薪每年都会有的,具体数目要看个人表现还有运气(具体做的项目重不重要)
二维码

扫码加我 拉你入群

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

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

2017-2-9 20:10:32
To xls:myzhang1982说的有道理。年终(中)不都有每个人的performance考评嘛。工资涨幅一般每年有个5%吧,好的有个百分之一二十或者更多。你现在已经入行了,这很重要啊!如果你喜欢这行,那就慢慢干吧,积累技术,知识,经验和能力。你才刚毕业,却老想着怎么涨工资,要以防内心浮躁而沉不下心。祝你好运!
上次考虑很久,决定用全英文发言。我相信大家都看得懂,如果有错误或不当之外,希望朋友们指出来。
二维码

扫码加我 拉你入群

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

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

2017-7-7 14:52:01
这是我copy的某段代码。当然在实际工作中,可能会有各种各样的写法。但这里一些思想,可以看代码去体会。
附件列表

Program 5.3 Creating a Typical Summary of Demographics.rar

大小:2.79 KB

 马上下载

Summary of Demographics

本附件包括:

  • Program 5.3 Creating a Typical Summary of Demographics.sas

二维码

扫码加我 拉你入群

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

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

2017-7-7 23:54:45

大赞楼主,有时间请继续。
二维码

扫码加我 拉你入群

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

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

2017-7-8 10:21:37
能不能借个楼请教一下SAS作业:用SAS用蒙特卡罗方法求上证50ETF期权定价编程
二维码

扫码加我 拉你入群

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

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

2017-7-11 14:55:12
To coelicolor: 非常感谢!很久没有写了,没想到还有人看。以后还会写的。
To PARK: 这个我是医药行业的,这个我不会,我相信网上有很多资料可以查,这个论坛上肯定也有,而且这本是经济论坛。你只要买一本金融sas编程,应该就有上面的内容。我学生时代也看到过。
二维码

扫码加我 拉你入群

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

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

2017-7-12 22:21:13
Adrian2Hope 发表于 2017-7-11 14:55
To coelicolor: 非常感谢!很久没有写了,没想到还有人看。以后还会写的。
To PARK: 这个我是医药行业的, ...
感谢楼主提供的宝贵经验!
二维码

扫码加我 拉你入群

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

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

2017-7-26 20:39:57
想起楼主的宝贴,搜索出来又看了一遍,有收获。感谢分享。
二维码

扫码加我 拉你入群

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

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

2017-7-26 22:17:58
Adrian2Hope 发表于 2016-11-29 14:06
如题。

我想如果有时间了,我会不定时地记录下我本人在这个行业的一些工作情况。或许有的时候就像一篇日 ...
楼主,您好,看了您发的帖子,了解了您从事于医药行业,并且已经是SAS 编程大神级的人物了,碰巧我也是从事于医疗领域,虽然不是学数学和计算机的,但认为SAS在现实工作中有很大用途,所以正在自学SAS,作为一名初学者,以后可能会遇到很多不懂的问题,如果可以的话,希望您可以多多指导,我一定会受益匪浅的,谢谢!
二维码

扫码加我 拉你入群

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

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

2017-7-29 13:34:22
To 然然要进步: "并且已经是SAS 编程大神级的人物了",这句话绝对谬赞了哦!论坛了高手多得很,我充其量只能算是在这个行业有点经验的人而已。大家共同进步,我也需要向大家学习!如果有什么要讨论的,可以联系我。
另外,我目前在做一些training资料,只是针对纯SAS编程的。分初级和高级,录制视频。当然,这只是个想法,而还没具体实施。我觉得对已经使用过SAS很多年的人来说,这没有什么。但如果完全没有接触过,但又想学,那我刚好可以和大家一起过一遍。同时,我应该会在讲解中加入工作中的编程心得,这样比较生动,也有一定的指向性。不知道这种想法可不可行?
另外,工作中事情多,一天一天也就这样过去了。想总结某种知识,然后发布出来,让大家参与讨论,批评和指正,对我而言,并不是一件易事。但,我肯定会有更新的,所以,感谢上面朋友的回复!如果今后有一天,我不在这行业,那我写的这些东西,虽然不一定多有价值,但至少证明,我曾经呆过!
二维码

扫码加我 拉你入群

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

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

2017-7-31 11:22:58
敢问楼主考A00-225: SAS Advanced Predictive Modelling 及A00-226: SAS Text Analytics, Time series, Experimentation and Optimization 吗? 我在找course note, 因为不出口美国, 我想买也买不到, 很是烦恼
二维码

扫码加我 拉你入群

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

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

2017-8-1 13:31:22
期待楼主更新,刚踏入这个行业一个月
二维码

扫码加我 拉你入群

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

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

2017-8-2 02:02:43
谢谢楼主分享!也准备进入这个行业!
二维码

扫码加我 拉你入群

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

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

2017-8-2 09:27:30
mark一下,期待楼主更新,也是实习误打误撞进入这个行业~
二维码

扫码加我 拉你入群

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

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

2017-8-5 13:26:45
Adrian2Hope 发表于 2017-7-29 13:34
To 然然要进步: "并且已经是SAS 编程大神级的人物了",这句话绝对谬赞了哦!论坛了高手多得很,我充其量只能 ...
嗯,您还是很棒的,我现在主要用SAS做一些医学数据统计分析,不知道您对于用SAS 来做多元统计分析中的广义可加模型(GAM)熟不熟,我现在在处理一批数据,要用到广义可加模型,对于模型的拟合度,需要计算R2,但SAS 程序代码跑出来的结果都没有这部分,不知道您对这个了不了解,可以指导我一下,十分感谢!
二维码

扫码加我 拉你入群

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

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

2017-8-14 10:23:12
To jeffkykong: 看你问题,很高级,像是预测和时间序列模型,是经济方面吗?鄙人也不懂这个,也没有考过这个,故而回答不了你的问题,还望见谅!
To 燕子兮 and 琅呀帮 and 我亲爱x: 欢迎这几位小伙伴加入这个行业。有句话怎么说的,既然选择了远方,便只顾风雨兼程!希望你们过的开心快乐!
To 然然要进步:  我刚进入这个行业的时候,还是经常做统计分析的,毕竟也算是统计出身。后来做global study的时候,统计方面就知道的少,除非在SAP中要求要用到的model,会再查查代码和分析下。你可以查找sas help document方面的东西,或者问问群里面的大神,肯定有人能解决的。我想,之所以没有出现想要的结果,更多的时候,可能是程序写的并不精确。没有回答上您的问题,很抱歉。谢谢您的回复!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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