作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
creating z-scores
(3 个回答)
7年前关闭。
我有一个包含多列数据的制表符分隔文本文件。我想将每列中的值转换为 z 分数,以便我可以更好地比较每列中的分布。有谁知道一种快速的方法来做到这一点?我一直在学习 R 并认为 R 可能有一种有效的方法来做到这一点,但欢迎任何解决方案。我想使用 z 分数为明天的演示制作一些数字,因此速度至关重要。
表格示例:
CHROM BIN_START BIN_END N_VARIANTS dataset1 dataset2 dataset3 dataset4 dataset5 dataset6 dataset7
chr1 1 500000 3881 0.0287298 0.0527506 0.0306643 0 0 0.12356 0
chr1 500001 1000000 3370 0.026538 0 0 0 0 0.0887265 0
chr1 1000001 1500000 2851 0.10893 0 0.0391224 0 0 0.0074585 0
chr1 1500001 2000000 3167 0.0612552 0 0 0 0 0.0527309 0
chr1 2000001 2500000 2592 0.154722 0 0.00540119 0 0 0.276087 0
chr1 2500001 3000000 4096 0.0214323 0.0521432 0 0.0505466 0.0367322 0.0147888 0
chr1 3000001 3500000 3825 0.100806 0 0.203501 0.00675269 0 0.10611 0.122551
chr1 3500001 4000000 2597 0 0.172489 0 0.127946 0.0976384 0.058526 0
chr1 4000001 4500000 3497 0 0.0280811 0 0.0137599 0 0.113574 0.0452258
chr1 4500001 5000000 4828 0 0.019744 0 0 0.0231157 0 0
chr1 5000001 5500000 4314 0.0247076 0 0 0.00943007 0.00186957 0.0240571 0.138595
chr1 5500001 6000000 3529 0.0168133 0 0.00544462 0 0 0 0
chr1 6000001 6500000 2396 0 0 0.0425213 0 0 0.0176949 0
chr1 6500001 7000000 4154 0 0.0827602 0 0 0 0.0583389 0
chr1 7000001 7500000 2590 0 0 0 0 0.106904 0 0.0885134
chr1 7500001 8000000 2939 0.108101 0.0472759 0.0201759 0.0169716 0.176171 0.0371988 0.154431
chr1 8000001 8500000 3820 0 0 0 0.0081009 0 0.0305172 0
最佳答案
试试 scale
功能:默认情况下,它减去平均值并除以每列的 sd(即 Z 变换)。
假设您只想缩放 dataset
列:
sc_cols <- grepl("^dataset",names(tt))
tt2 <- tt
tt2[sc_cols] <- scale(tt2[sc_cols])
zapsmall(sapply(tt2[,-1],mean))
## BIN_START BIN_END N_VARIANTS dataset1 dataset2 dataset3 dataset4
## 4000001 4500000 3438 0 0 0 0
## dataset5 dataset6 dataset7
## 0 0 0
sapply(tt2[,-1],sd)
## BIN_START BIN_END N_VARIANTS dataset1 dataset2 dataset3
## 2524876.2346 2524876.2346 709.2381 1.0000 1.0000 1.0000
## dataset4 dataset5 dataset6 dataset7
## 1.0000 1.0000 1.0000 1.0000
关于r - 如何将数据列转换为 z 分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27021000/
我是一名优秀的程序员,十分优秀!