如何计算dplyr中每个样本的配对变量的出现次数

时间:2017-05-22 15:52:09

标签: r dplyr

我在.txt文件中有一个样本列表。每个样本都有多行,这些行是来自该样本的观察结果。列显示开始和结束位置。我想计算每个样本的相同观察对的数量。

sample start end
sampleA D C
sampleA D D
sampleB A A
sampleA D D
sampleB A A
sampleB B A
sampleB B A
sampleA A A

预期输出(第1列和第2列是配对观察,第3列是该观察的计数:

sampleA   
D D 2
D C 1
A A 1

sampleB
A A 2
B A 2

我知道如何使用count()和Arrange(desc())为单个观察做这个,但是当我需要同时考虑两个列时你是如何做到的?

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用dplyr,按3列分组并计算行数:

library(dplyr)
df %>%
group_by(sample,start,end) %>%
summarise(n=n())

返回:

 sample start   end     n
        <chr> <chr> <chr> <int>
    1 sampleA     A     A     1
    2 sampleA     D     C     1
    3 sampleA     D     D     2
    4 sampleB     A     A     2
    5 sampleB     B     A     2

答案 1 :(得分:0)

或另一个选项是data.table

library(data.table)
setDT(df1)[, .(n = .N), .(sample, start, end)]
#    sample start end n 
#1: sampleA     D   C 1
#2: sampleA     D   D 2
#3: sampleB     A   A 2
#4: sampleB     B   A 2
#5: sampleA     A   A 1