我从与此数据帧类似的程序中获得了输出:
df <- data.frame(Pos = c(1, 2, 3), Alel1 = c('A:1', 'T:0', 'C:0.5'),
Alel2 = c('T:0', 'C:1', 'A:0.3'), Alel3 = c(NA, NA, 'T:0.2'),
Alel4 = c('A:1', 'T:1', 'C:0.5'), Alel5 = c('T:0', 'C:0', 'A:0.5'),
Alel6 = c(NA, NA, NA))
对于每行,我想获取Alel1,Alel 2和Alel3( group1 )的主要等位基因,以及Alel4,Alel 5和Alel6( group2 < / strong>)。另外,有关第1组和第2组中主要等位基因之间的差异的其他信息(更改)。 所以,然后我得到了新的列/数据框,它更像这样概括了等位基因信息:
df1 <- data.frame(Group1 = c("A", "C", "C"),
Group2 = c("A","T","0.5C 0.5A"),
Changing = c(0,1,0.5))
我正在尝试从每一列中分离等位基因,并使用此列将其添加到新列中。
df$a <- substring(df$Alel1, 3)
df$b <- substring(df$Alel2, 3)
df$c <- substring(df$Alel3, 3)
然后使用此找到每个组的最大值
i <- as.character(c("a","b","c"))
j <- max.col(df[i],"first")
但是, j 中的值返回为 NA 而不是列名,而且我不知道如何从该列名中调用相应的等位基因。 给出我想要的任何更简单的建议,将不胜感激!
答案 0 :(得分:0)
这是您想要的吗?
i <- as.character(c("a","b","c"))
j <- i[max.col(replace(df[i], is.na(df[i]), -Inf), "first")]
#[1] "a" "b" "a