我在.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())为单个观察做这个,但是当我需要同时考虑两个列时你是如何做到的?
提前致谢。
答案 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