r - 转换数字矩阵中snp基因型的数据框

标签 r dataframe genetics

snp1 <- c("AA", "AT", "AA", "TT", "AA", "AT", "AA", "AA", "AA", "AT")
snp2 <- c("GG", "GC", "GG", "CC", "CC", "GC", "GG", "GG", "GG", "GC")
df1 <- data.frame(snp1, snp2)

num1 <- c(1, 2, 1, 3, 1, 2, 1, 1, 1, 2)
num2 <- c(1, 2, 1, 3, 3, 2, 1, 1, 1, 2)
df2 <- data.frame(num1, num2)

这是在 R 中完成的。我有一个对象 df1,我想将其转换为 df2。对于 df1 中的每一列,最常见的值转换为 1,第二个最常见的值转换为 2,依此类推。我如何有效地做到这一点?

最佳答案

主题变化:

lapply(df1, function(x) match(x, levels(x)[order(-table(x))]) )
#$snp1
# [1] 1 2 1 3 1 2 1 1 1 2
#
#$snp2
# [1] 1 2 1 3 3 2 1 1 1 2

关于r - 转换数字矩阵中snp基因型的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37493993/

相关文章:

r - 将 lapply 转换为 foreach?

python - 如何根据索引的最大值差异创建新列?

python - 如何根据带有权重的数据创建箱线图?

javascript - Shiny 的自定义 selectInput/selectizeInput

r - 当另一列中的值为 X 时,查找一列的最大值

r - 从位置 x 选择 R 中的每第 n 列

python - Pandas 数据框计算

r - R 中基因列表(带有 ENTREZID)的基因本体论(GO)分析?

r - 使用 SNP 等位基因数据为 ACGT 创建概率矩阵

r - 转置数据框