gpt4 book ai didi

string - R:如何根据规范更改数据框中的列名

转载 作者:行者123 更新时间:2023-12-01 10:52:04 24 4
gpt4 key购买 nike

我有一个数据框,它的开头如下:

                                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,是字符串的第4个字符。在这种情况下,它是一个 H。如果第 4 个字符是“H”或“K”,我想要做的是将“SM”部分更改为“Control”,如果第 4 列是“X”或“Case” “V”。我想保留名称中的所有其他内容。所以最后,我想要一张这样的 table :
                        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

请记住,第 4 个字符是“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) <- sapply(names(x),function(z) {
if(substring(z,4,4) %in% c("H","K"))
sub("SM","Control",z)
else if(substring(z,4,4) %in% c("X","V"))
sub("SM","Case",z)
})

关于string - R:如何根据规范更改数据框中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17970287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com