合并两个数据集 - 包括唯一行

时间:2016-03-21 18:37:50

标签: r merge sum bioinformatics

我有一个数据集:

Island,Individual,all1,all2
Santiago,CVW3,01,01
Santiago,CVW8,01,02
Santiago,CVW9,03,03
Santiago,CVW10,01,01
Santiago,CVW12,03,03
Santiago,CVW19,01,01
Santiago,CVW25,01,04
Santiago,CVW39,04,04
Santiago,CVW40,01,01
Santiago,CVW41,01,01
Fogo,CVW64,04,04
Fogo,CVW67,01,01
Fogo,CVW70,02,04
Fogo,CVW74,03,05
Fogo,CVW80,01,02
Fogo,CVW99,01,04
Fogo,CVW101,02,02
Fogo,CVW103,01,02
Fogo,CVW104,01,04
Fogo,CVW111,02,04
SaoNicolau,CVW81,01,01
SaoNicolau,CVW87,01,01
SaoNicolau,CVW92,01,01
SaoNicolau,CVW124,01,01
SaoNicolau,CVW125,01,01
SaoNicolau,CVW133,01,01
SaoNicolau,CVW136,01,01

all1和all2中的数据是因素。 我需要计算all1和all2中每个因子的组合频率,包括Island的每个子集和整个数据集。 所以对于圣地亚哥和01,频率将是:12/20。

我一直致力于将数据集拆分为岛屿:

#Get data subset for Santiago:
stsplit = subset(locus, locus$Island == "Santiago")

allfr1st = count(stsplit, "all1")
allfr2st = count(stsplit, "all2")

#Rename headers:
names(allfr1st) = c("Allele", "Freq")
names(allfr2st) = c("Allele", "Freq")

这给了我:     allfr1st:

Allele,Freq
01,7
03,2
04,1


allfr2st:

Allele,Freq
01,5
02,1
03,2
04,2

现在我想总结两个数据帧的每个等位基因的频率,所以我会得到以下

Allele,Freq
01,12
02,1
03,4
04,3

merge()不包括等位基因02,因为它不在两个数据集中。 如何以正确的方式将两者结合起来?

如果有(并且肯定有)更明显的方式来获得我想要的东西(01,02,03等整体和岛内的频率),请随时给我一些建议。

1 个答案:

答案 0 :(得分:1)

你正在寻找这样的东西吗? 该脚本计算每个" loci"的数量。并将其除以每个位置的所有基因座的数量。

<script type="text/javascript">
function myChoice(){
  var s = document.getElementById("module_id");
  var module_id = s.selectedIndex.value;

  if (module_id === 1)
      window.location = "response.jsp";
  if (module_id === 2)
      window.location = "http://www.google.com";
}
</script>