作者fifish89 (OMG)
看板R_Language
标题[讨论] 每行抓取特定值
时间Mon Jul 20 13:57:44 2015
[问题类型]:
想针对每行判别是否有包含某特定值
[软体熟悉度]:
使用者(已经有用R 做过不少作品)
[问题叙述]:
资料格式如下:
ID D1 D2 D3 D4....D50
A 123 23 ......... 55
B 24 005
C 504 . . 002
D 002 . . .
. . . ...
H . . 002 ...
. . . ...
XX 410 . ...
============================
CODE1<-有指定某些数字一
CODE2<-有指定某些数字二
.
.
.
CODE15<-有指定某些数字十五
这是医院资料,
每个人若最多有50个诊断栏位(D1-->D50),
而CODE1...CODE15是每个疾病的指定疾病码,
想要判断每个人是否有罹患这些疾病。
EX:
假设CODE1=002(中风(stroke)疾病码),
我就会去判断每个诊断栏位中(D1-->D50)是否有002这个疾病码,
ID=C,在D4中有抓到中风码
ID=D,在D1中有抓到中风码
ID=H,在D3中有抓到中风码
希望输出结果为
ID stroke ....
A 0
B 0
C 1
D 1
. .
. .
H 1
. .
XX .
[你的答案]:
目前自己的想法是将这15个指定的疾病放在list,再用apply去做判断。是可以执行的。
只是想了解各个高手们会以怎样的思考方式或不同的函数作运算?
藉由每个人的思考方式,好像更能刺激自己的想法。
disease<-list(
CODE1=c(002)
.
.
CODE15=c(23,555,467..)
)
disease_yes<-function(x,code){
rowname <- which(x%in%code)
return(rowname)
}
sub_data1<-data.frame(data1[,1]) #第一栏是ID
for(i in 1:length(disease)){
sub_data1[,i+1]<-0
rowname<-sort(unique(unlist(apply(data1,2,FUN=disease_yes,code=disease[[i]]))))
sub_data1[rowname,i+1]<-1
colnames(sub_data1)[i+1]<-names(disease)[i]
}
[关键字]:
apply
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.125.94
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1437371866.A.956.html
1F:→ celestialgod: tidyr::gather + dplyr::summarise 07/20 14:02