String R:如何根据规范更改数据框中的列名
我有一个数据框,它的开头如下:String R:如何根据规范更改数据框中的列名,string,r,dataframe,multiple-columns,bioinformatics,String,R,Dataframe,Multiple Columns,Bioinformatics,我有一个数据框,它的开头如下: SM_H1455 SM_V1456 SM_K1457 SM_X1461 SM_K1462 ENSG00000000419.8 290 270 314 364 240 ENSG00000000457.
SM_H1455 SM_V1456 SM_K1457 SM_X1461 SM_K1462
ENSG00000000419.8 290 270 314 364 240
ENSG00000000457.8 252 230 242 220 106
ENSG00000000460.11 154 158 162 136 64
ENSG00000000938.7 20106 18664 19764 15640 19024
ENSG00000000971.11 30 10 4 2 10
请注意,还有更多的列和行
我想做的是:我想更改列的名称。列名称中最重要的信息(例如SM_H1455)是字符串的第四个字符。在本例中,它是一个H。我想做的是,如果第四个字符是“H”或“K”,则将“SM”部分改为“Control”,如果第四列是“X”或“V”,则将“case”部分改为“Control”。我想把其他一切都记在名字里。最后,我想要一张这样的桌子:
Control_H1455 Case_V1456 Control_K1457 Case_X1461 Control_K1462
ENSG00000000419.8 290 270 314 364 240
ENSG00000000457.8 252 230 242 220 106
ENSG00000000460.11 154 158 162 136 64
ENSG00000000938.7 20106 18664 19764 15640 19024
ENSG00000000971.11 30 10 4 2 10
请记住,第四个字符是“V”、“X”、“K”还是“H”是完全随机的
我将感谢任何帮助!谢谢。单向,其中
x
是您的df:
controls <- which(substring(names(x),4,4) %in% c("H","K"))
cases <- which(substring(names(x),4,4) %in% c("X","V"))
names(x)[controls] <- gsub("SM","Control",names(x)[controls])
names(x)[cases] <- gsub("SM","Case",names(x)[cases])
控制一行备选方案:
names(x) <- sub("^..(.(H|K))", "Control\\1", sub("^..(.(X|V))", "Case\\1", names(x))
name(x)再次非常感谢!!:-)此解决方案将比使用子字符串
函数快得多。
names(x) <- sub("^..(.(H|K))", "Control\\1", sub("^..(.(X|V))", "Case\\1", names(x))