gpt4 book ai didi

r - 如何用r中变量中的值替换数据框中的特定字符

转载 作者:行者123 更新时间:2023-12-04 19:31:34 25 4
gpt4 key购买 nike

我有一个数据框看起来像:

df <- read.table(text="chr     pos Ref Alt D045313 D045314 D045135 D045136 D045137 D045138
Chr1 1462191 T C 1/1 0/1 1/1 0/0 1/1 1/1
Chr1 1463534 G C 0/0 1/1 0/0 0/1 0/0 0/0
Chr1 1463881 T A 0/1 0/0 1/1 0/0 1/1 1/1
Chr1 1464091 G A 0/0 0/0 1/1 0/0 1/1 1/1
Chr1 1464651 T C 1/1 0/0 1/1 0/1 1/1 1/1",head=F, stringsAsFactors=F)

预期结果:
  chr     pos Ref Alt D045313 D045314 D045135 D045136 D045137 D045138
Chr1 1462191 T C C/C T/C C/C T/T C/C C/C
Chr1 1463534 G C G/G C/C G/G G/C G/G G/G
Chr1 1463881 T A T/A T/T A/A T/T A/A A/A
Chr1 1464091 G A G/G G/G A/A G/G A/A A/A
Chr1 1464651 T C C/C T/T C/C T/C C/C C/C

替换将遵循以下规则:
df[5:10] , "0"应替换为 中的字符df$Ref , "1"由 中的字符组成df$Alt .我检查了这个链接中的问题[ Replace specific characters in a variable in data frame in R ,但这对我的情况不起作用。感谢任何帮助。

最佳答案

创建数据:

df <- read.table(text="chr     pos Ref Alt D045313 D045314 D045135 D045136 D045137 D045138
Chr1 1462191 T C 1/1 0/1 1/1 0/0 1/1 1/1
Chr1 1463534 G C 0/0 1/1 0/0 0/1 0/0 0/0
Chr1 1463881 T A 0/1 0/0 1/1 0/0 1/1 1/1
Chr1 1464091 G A 0/0 0/0 1/1 0/0 1/1 1/1
Chr1 1464651 T C 1/1 0/0 1/1 0/1 1/1 1/1",head=T, stringsAsFactors=F)

使用 gsub :
vgsub<- Vectorize(gsub, SIMPLIFY = FALSE)
new <- vgsub("0", df$Ref, as.data.frame(t(df[5:10])))
new <- vgsub("1", df$Alt, new)
df[5:10] <- do.call("rbind", new)
df
chr pos Ref Alt D045313 D045314 D045135 D045136 D045137 D045138
1 Chr1 1462191 T C C/C T/C C/C T/T C/C C/C
2 Chr1 1463534 G C G/G C/C G/G G/C G/G G/G
3 Chr1 1463881 T A T/A T/T A/A T/T A/A A/A
4 Chr1 1464091 G A G/G G/G A/A G/G A/A A/A
5 Chr1 1464651 T C C/C T/T C/C T/C C/C C/C

关于r - 如何用r中变量中的值替换数据框中的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31811475/

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