我有一个data.frame,我想在其上应用分位数,使数据看起来更简单:
> head(Quartile)
GSM1321374 GSM1321375 GSM1321376 GSM1321377 GSM1321378 GSM1321379
1415670_at 11.203302 11.374616 10.876187 11.23639 11.02051 10.926481
1415671_at 11.196427 11.492769 11.493717 11.01683 11.15016 11.576188
1415672_at 11.550974 11.267559 11.800991 11.57551 10.93359 11.222779
1415673_at 11.293390 10.978280 11.367316 10.45135 10.35822 10.234964
1415674_a_at 9.254073 10.572670 9.361991 11.26998 10.21125 10.245857
1415675_at 9.922985 9.228195 9.798156 10.02844 10.19928 9.749947
Run Code Online (Sandbox Code Playgroud)
我应用了以下功能,它完成了这项工作.
quantfun <- function(x) as.integer(cut(x, quantile(x, probs=0:4/4), include.lowest=TRUE))
a <- apply(Quartile,1,quantfun)
b <- t(a)
colnames(b) <- colnames(Quartile)
Run Code Online (Sandbox Code Playgroud)
输出是:
> head(b)
GSM1321374 GSM1321375 GSM1321376 GSM1321377 GSM1321378 GSM1321379
1415670_at 3 4 …Run Code Online (Sandbox Code Playgroud) 我有一个包含 1 列的矩阵:
> Control_Title_name
vehicle_scan_id4
153 "CL2004060801AA"
155 "CL2004060801AA"
232 "EC2004102602AA"
Run Code Online (Sandbox Code Playgroud)
我想添加一个新列(名为“类”),如下所示:
> Control_Title_name
vehicle_scan_id4 Class
153 "CL2004060801AA" "Control"
155 "CL2004060801AA" "Control"
232 "EC2004102602AA" "Control"
Run Code Online (Sandbox Code Playgroud)
第一列(“vehicle_scan_id4”)的长度是可变的,所以我希望“Control”作为第二列(“Class”)中的一个值出现在每一行中。
> Phenodata
Name FileName Target
153 "EC2004060203AA.CEL" "EC2004060203AA.CEL" "Treatment"
155 "EC2004060205AA.CEL" "EC2004060205AA.CEL" "Treatment"
232 "EC2004102606AA.CEL" "EC2004102606AA.CEL" "Treatment"
153 "CL2004060801AA.CEL" "CL2004060801AA.CEL" "Control"
155 "CL2004060801AA.CEL" "CL2004060801AA.CEL" "Control"
232 "EC2004102602AA.CEL" "EC2004102602AA.CEL" "Control"
Run Code Online (Sandbox Code Playgroud)
这就是我的最终矩阵的样子。有没有一种方法可以只根据唯一行的值而不是row.names. 例如,第 4 行和第 5 行包含完全相同的值。我的新矩阵可能只包含其中之一,而不是两者。