识别,分组数据帧(R)中的唯一条目

时间:2019-02-28 17:00:46

标签: r dataframe duplicates

我有一个包含两列的数据框。一个是ID列(字符串),第二个是由几百个字符长的字符串(DNA序列)组成。我想识别独特的DNA序列,并将独特的组组合在一起。

使用:

data$duplicates<-duplicated(data$seq, fromLast = TRUE)

我已成功确定特定行是否重复。这还不够-我想知道我是否有2个,3个等重复项,以及它们对应于哪个ID(重要的是,ID始终保持其对应的顺序)。

也许像这样:

  

对于data $ duplicates = TRUE ...“在data $ grouping中添加数字   对应于重复项。”

我不知道如何编写最后一部分的代码。 感谢您的帮助。

编辑:例如:

df <- data.frame(ID = c("seq1","seq2","seq3","seq4","seq5"),seq= c("AAGTCA",AGTCA","AGCCTCA","AGTCA","AGTCAGG"))

我希望输出是一个新列(例如df $ grouping),其中为每个唯一组赋予一个数值,所以在这种情况下:

("1","2","3","2","4")

1 个答案:

答案 0 :(得分:1)

  

我希望输出是一个新列(例如df $ grouping),其中为每个唯一组赋予一个数值,所以在这种情况下:

由于Limited已经成为一个因素,因此我们只能使用级别编号。当一个因子被强制为整数时给出。

df$seq

如果在您的真实数据中,df$grouping = as.integer(df$seq) df # ID seq grouping # 1 seq1 AAGTCA 1 # 2 seq2 AGTCA 3 # 3 seq3 AGCCTCA 2 # 4 seq4 AGTCA 3 # 5 seq5 AGTCAGG 4 列不属于seq类,您仍然可以使用factor。默认情况下,组的顺序为字母顺序-您可以通过按需要的顺序为df$grouping = as.integer(factor(df$seq))赋予levels参数来修改此顺序。例如,factor会将级别(以及分组整数)按照它们首次出现的顺序排列。

如果要查看每个组中的行数,请使用df$grouping = as.integer(factor(df$seq, levels = unique(df$seq))),例如

table