使用r从一列替换到另一列
我不熟悉使用r从一列替换到另一列,r,R,我不熟悉R,但有一个非常大的文件要处理。 我在R中有一个表,如下所示: CHROM POS ID REF ALT Sample1 Sample2 20 1 rs1000000 G A 1/1 0/0 20 2 rs1000002 A G 1/1 0/1 20 3 rs1000004 A G 0/0 0/0 我想查看第6列Sample1,并用第4列R
R
,但有一个非常大的文件要处理。
我在R
中有一个表,如下所示:
CHROM POS ID REF ALT Sample1 Sample2
20 1 rs1000000 G A 1/1 0/0
20 2 rs1000002 A G 1/1 0/1
20 3 rs1000004 A G 0/0 0/0
我想查看第6列Sample1
,并用第4列REF
中相应行中的字母替换“0”。我想删除斜杠,并通过将第6列Sample1
中的斜杠替换为第5列ALT
中的字母来重复此操作。我想对表中的每一行都这样做。这是预期的结果:
CHROM POS ID REF ALT Sample1 Sample2
20 1 rs1000000 G A AA GG
20 2 rs1000002 A G GG AG
20 3 rs1000004 A G AA AA
谢谢。您需要首先拆分
/
上的Sample1
列。检查分割值是否为0
,然后用REF
替换该值,否则ALT
列的内容。最后连接这些替换的值以获得最终结果
对Sample2
重复相同的过程
(假设-Sample1
&Sample2
始终只有0
或1
)
库(dplyr)
df%>%
行()
突变(Sample1=粘贴(如果其他(strsplit(Sample1,split='/'))[[1]]==0,REF,ALT),collapse=“”),
Sample2=粘贴(如果其他(strsplit(Sample2,split='/')[[1]]==0,REF,ALT),collapse=”“)
给
> df1
CHROM POS ID REF ALT Sample1 Sample2
1 20 1 rs1000000 G A AA GG
2 20 2 rs1000002 A G GG AG
3 20 3 rs1000004 A G AA AA
样本数据:
df <- structure(list(CHROM = c(20L, 20L, 20L), POS = 1:3, ID = c("rs1000000",
"rs1000002", "rs1000004"), REF = c("G", "A", "A"), ALT = c("A",
"G", "G"), Sample1 = c("1/1", "1/1", "0/0"), Sample2 = c("0/0",
"0/1", "0/0")), .Names = c("CHROM", "POS", "ID", "REF", "ALT",
"Sample1", "Sample2"), class = "data.frame", row.names = c(NA,
-3L))
# CHROM POS ID REF ALT Sample1 Sample2
#1 20 1 rs1000000 G A 1/1 0/0
#2 20 2 rs1000002 A G 1/1 0/1
#3 20 3 rs1000004 A G 0/0 0/0
df如果它帮助您解决了问题,那么您可能会想这样做,这样就可以认为问题已经解决了。