gpt4 book ai didi

r - 如何从数据框中选择包含不同文本组合的列?

转载 作者:行者123 更新时间:2023-12-04 15:20:43 25 4
gpt4 key购买 nike

我有如下示例数据,但我的真实数据包含超过 10000 行

IND  snp1      snp2    snp3     snp4    snp5
1 A/G T/T T/C G/C G/G
2 A/A C/C G/G G/G A/A
3 T/T G/G C/C C/C T/T

现在我只想对具有这些字符的列进行子集化 (A/T,A/G,A/C,T/A,T/G,T/C,G/A,G/T,G/C,C/A,C/T,C/G) 在满足上述条件后,我应该子集 snp1snp3snp4 我将使用此代码获取它们

select(df, snp1, snp3, snp4)[1, 1:3]

这可能发生在少量列上,但在我的例子中,我需要遍历所有 10000 列字符并将它们子集化到不同的文件中。我如何在 R 中执行此操作 tidyverse 包是否对我有帮助?如果是,请告诉我结果如何。在这方面的任何帮助将不胜感激提前致谢。

最佳答案

您可以在 select() 中使用整洁选择

library(dplyr)
cond <- c("A/T", "A/G", "A/C", "T/A", "T/G", "T/C", "G/A", "G/T", "G/C", "C/A", "C/T", "C/G")

df %>%
select(starts_with("snp") & where(~ any(.x %in% cond)))

# snp1 snp3 snp4
# 1 A/G T/C G/C
# 2 A/A G/G G/G
# 3 T/T C/C C/C

数据

df <- structure(list(IND = 1:3, snp1 = c("A/G", "A/A", "T/T"), snp2 = c("T/T", 
"C/C", "G/G"), snp3 = c("T/C", "G/G", "C/C"), snp4 = c("G/C", "G/G", "C/C"),
snp5 = c("G/G", "A/A", "T/T")), class = "data.frame", row.names = c(NA, -3L))

关于r - 如何从数据框中选择包含不同文本组合的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63373618/

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