R 如何基于列名对行中的数据进行分类和操作
我有一张桌子,开始如下:R 如何基于列名对行中的数据进行分类和操作,r,filter,bioinformatics,R,Filter,Bioinformatics,我有一张桌子,开始如下: Control_H1455_121005_4 Case_X1456_121005_1 Case_V1457_121005_7 Control_K1461_121005_2 ENSG00000419.8 0 0 14 3 ENSG00000457.8
Control_H1455_121005_4 Case_X1456_121005_1 Case_V1457_121005_7 Control_K1461_121005_2
ENSG00000419.8 0 0 14 3
ENSG00000457.8 2 0 1 0
ENSG00000460.11 18 3 16 6
ENSG00000938.7 0 0 0 0
更新:
gsub("^.*?_","_","Case_H1455_121005_4")
但这将返回“\u H1455\u 121005\u 4”
。我想保留的部分实际上是Case_H1455
。所以我只想保留所有字符直到第二个下划线
更新:对于(2),我有以下代码:
#separating data into Control & Case groups
data_con=data[which(substring(names(data),2,2) %in% c("o"))]
data_case=data[which(substring(names(data),2,2) %in% c("a"))]
#delete rows if both case and control groups have >= 90% cols that contain 0
#data <- data[(rowSums(data_case==0)/ncol(data_case) < 0.9 & rowSums(data_con==0)/ncol(data_con) < 0.9) , ]
data <- data[rowSums(data==0)/ncol(data) < 0.9, ]
#将数据分为控制组和案例组
data_con=data[其中(子字符串(名称(数据),2,2)%in%c(“o”)]
data_case=data[其中(子字符串(名称(数据),2,2)%in%c(“a”)]
#如果案例组和对照组的列数均大于等于90%且包含0,则删除行
#数据=在病例组和对照组中,90%的COL均含有0。因此,在这个示例表中,为了删除一行,Control和Case组必须分别包含>=90%的包含0的col。所以这是最后一排了。如果病例组中含有>=90%的COL为0,而对照组为,我不确定,但我认为这可能会有帮助
# 1)
# assuming that the structure of "_" does not change
colnames(data) <- sapply(colnames(data),
function(x){
paste(unlist(strsplit(x, "_"))[1:2], collapse = "_")
})
# 2)
# to sperate case and control
ind <- grepl("Case", colnames(data))
# assuming that there are at lesast tow cases and tow control
# otherwise use sum and length
data[rowSums(data[, !ind]==0)/ncol(data[, !ind]) < 0.9 &
rowSums(data[, ind]==0)/ncol(data[, ind]) < 0.9, ]
#1)
#假设“u”的结构不变
colnames(data)与(1)有何不同?对于(2),您必须rowSums
使用哪些列。对于(1)我想删除colname的一部分,而不是替换“SM”部分。我有gsub(“^.*?”,“,”Case\u H1455\u 121005\u 4”)
,但它给出了“\u H1455\u 121005\u 4”
,这是第一个下划线后面的部分。但是我想要第二条下划线之前的部分。所以它应该是案例_H1455
。有什么建议吗?对于(2),我有这个data\u con=data[which(在%c(“o”)中的子字符串(名称(数据),2,2)%]
,data\u case=data[which(在%c(“a”)中的子字符串(名称(数据),2,2)%]
和数据编辑您的问题以显示您尝试了什么:(1)。把这些东西作为评论贴出来会让人很难阅读。是的,这就是我要找的!非常感谢:-)