查看原文
其他

head,str,class之后加上table

The following article is from 生信技能树 Author 生信技能树


我们的生信入门班和数据挖掘线上直播课程已经有了三年多的历史,培养了一波又一波优秀的生信人才。新一期的生信入门班学员热情高涨,他们富有探索精神,又乐于助人,这是一个在帮助别人的过程中自己也获得进步的例子,令我们非常开心。

下面是学员受启发后解决问题的记录

(生信技能树学员 )


Tags:生信技能树11期数据挖掘班学员;被卷的亲娘都不认识的科研小渣;被生活按着头问着服不服的异乡人;如果你认识我的标签,我们来自共同的精神家园......


南瓜南瓜🎃写于2022.5.4,青年节快乐


昨天用caret切割队列,训练集建模画生存图很顺利,一毛一样的代码测试集就出现了奇怪的报错。


切割的方法就不放了,总之dat2就是我的训练集


# 划分高低风险并画生存分析图
names(fp) = dat2$ID
ri = ifelse(fp<median(fp),"lowrisk","highrisk")
ri = factor(ri,levels = c("lowrisk","highrisk"))

sfit <- survfit(Surv(time, event)~ri, data=dat2)

ggsurvplot(sfit,palette = c("#E7B800", "#2E9FDF"),
risk.table =TRUE,pval =TRUE,
conf.int =TRUE,xlab ="Time in months",
ggtheme =theme_light())

训练集生存曲线,美吧?


下面是测试集

names(fp) = dat3$ID
ri = ifelse(fp<median(fp),"lowrisk","highrisk")
ri = factor(ri,levels = c("lowrisk","highrisk"))


table(ri)
sfit <- survfit(Surv(time, event)~ri, data=dat3)

啊这。。。哪错了?函数必然不会错,肯定是我数据错了


把dat3打开左看右看都很可爱,没什么问题,跟训练集dat2一样可爱


必应搜了一个来小时,我不认识他,他也不认识我,后半夜了先睡吧。。。


第二天起来,在群里求助


那就table下吧


dat3还是一如既往的可爱,还有啥能改的吗?ri也是输入数据,可以改

table(ri),不table不知道,一table吓一跳


> table(ri)
ri
lowrisk highrisk
0 0


啥也没有

好一片白茫茫大地真干净。。。

ri哪来的,fp算中位数分出来的

再看看fp怎么了


> fp
TCGA-A8-A09W-01A TCGA-A8-A08L-01A TCGA-A8-A06Q-01A
2.16326419 3.43864608 1.07523611
TCGA-A8-A09N-01A TCGA-A8-A06Z-01A TCGA-AC-A8OQ-01A
0.91136286 1.80119628 3.63723566
TCGA-D8-A27P-01A TCGA-AN-A04D-01A TCGA-AN-A04C-01A
...


0.41864215 1.40434772 1.30603643
TCGA-GM-A2DA-01A TCGA-B6-A0IJ-01A TCGA-B6-A0RI-01A
-2.93763366 -0.34409350 1.14874097
TCGA-B6-A0RE-01A TCGA-B6-A0RN-01A TCGA-B6-A0I5-01A
-0.90502148 -0.51753585 -2.65137515
TCGA-B6-A0RU-01A <NA> <NA>
0.06079243 0.03573851 -4.08829626
<NA>
-0.05904328

刷屏了,中间的都不用看,竟然有NA

连数都没有,大罗神仙也算不出来中位数

再往上接着找:

fp <- predict(model,newdata = dat3)

fp是这么算出来的,绕了一圈又绕回dat3了

fp没有值那肯定dat3里对应的值也没有呗,不用说dat3有缺失值了

回到前面的数据整理

dat3 = na.omit(dat3)

去掉缺失值再跑一遍

> fp <- predict(model,newdata = dat3)
> fp
TCGA-A8-A09W-01A TCGA-A8-A08L-01A TCGA-A8-A06Q-01A
2.16326419 3.43864608 1.07523611
TCGA-A8-A09N-01A TCGA-A8-A06Z-01A TCGA-AC-A8OQ-01A
0.91136286 1.80119628 3.63723566
TCGA-D8-A27P-01A TCGA-AN-A04D-01A TCGA-AN-A04C-01A
-0.45356650 1.42863581 1.76104458

这回fp全了

再往下的ri

> table(ri)
ri
lowrisk highrisk
261 262

哈哈哈

生存分析

我就问你美不美。。。

总结:

1.R语言是不会错的,错的是永远是我。

2.函数是不会错的,错的永远是我的数据。

3.健明老师已经说出来了:试试看head,str,table,努力摸索

4.儿子有问题往上找老子


Acknowledagement

感谢生信技能树小洁老师的指导,以及5月生信入门班的同学们的热情互动。上述内容为个人的浅薄理解,目前学习进度还没有涉及到在生信分析中的应用,如有错误,请指正!后期如果在生信分析中有应用,会尝试更新。

文末友情宣传

强烈建议你推荐给身边的博士后以及年轻生物学PI,多一点数据认知,让他们的科研上一个台阶:


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存