我有一个关于根据两列的组合来更改数据框中字符值的问题。我将尝试给出一个数据框的示例。
我想要更改从Ind1到Ind3列中与列A1和A2的可能组合不匹配的值,例如在第一行中,A1是A,A2是C,所以可能的组合是AA,AC,CC(基于A1和A2的顺序)。因此,Ind2应该是AC而不是CA。
期望的输出应该是这样的:
我尝试使用
data <- data.frame(A1 = c("A", "T", "C"), A2 = c("C", "G", "T"),
Ind1 = c("AA", "TG", "TT"), Ind2 = c("CA", "GT", "CT"),
Ind3 = c("AC", "GG", "TC"))
> data
A1 A2 Ind1 Ind2 Ind3
1 A C AA CA AC
2 T G TG GT GG
3 C T TT CT TC
我想要更改从Ind1到Ind3列中与列A1和A2的可能组合不匹配的值,例如在第一行中,A1是A,A2是C,所以可能的组合是AA,AC,CC(基于A1和A2的顺序)。因此,Ind2应该是AC而不是CA。
期望的输出应该是这样的:
> data
A1 A2 Ind1 Ind2 Ind3
1 A C AA AC AC
2 T G TG TG GG
3 C T TT CT CT
我尝试使用
switch
,但它不起作用。希望能得到帮助,谢谢。
dput(df2) structure(list(chr = "chr11", pos = "74565122", snp_id = "chr11_74565122_C_T_b38", Allele1 = "C", Allele2 = "T",
GTEX-111CU= "TT",
GTEX-111YS= "CT",
GTEX-1122O= "TC",
GTEX-117XS= "TC",
GTEX-117YX= "TC",
GTEX-11DXX= "TC",
GTEX-11DXZ= "CC"), class = "data.frame", row.names = c(NA, -1L))
,我尝试过:df2 %>% mutate(across(starts_with("GTEX"), ~ ifelse(.x %in% paste0(Allele2, Allele1), paste0(Allele1, Allele2), .x)))
- undefineddput(df2)
对我来说不起作用。我收到了 "错误:...中的意外符号"。 - undefinedstructure(list(chr = "chr11", pos = "74565122", snp_id = "chr11_74565122_C_T_b38", Allele1 = "C", Allele2 = "T", GTEX_111CU = "TT", GTEX_111YS = "CT", GTEX_1122O = "TC", GTEX_117XS = "TC", GTEX_117YX = "TC"), class = "data.frame", row.names = c(NA, -1L))
- undefined