比较 r 中样本的频率
Compare frequencies of samples in r
我想比较两个不同观察的样本频率。问题是第一个不包含第二个数字的整个范围。如果不编写 for 循环根据 count 返回的 x 值对它们进行排序,我怎么能将它们组合起来呢?
这是一个 MWE 以供澄清:
library(plyr)
a <- c(5, 4, 5, 7, 3, 5, 6, 5, 5, 4, 5, 5, 4, 5, 4, 7, 2, 4, 4, 5, 3, 6, 5, 6, 4, 4, 5, 4, 5, 5, 6, 7, 4)
b <- c(1, 3, 4, 6, 2, 7, 7, 4, 3, 6, 6, 3, 6, 6, 5, 6, 6, 5)
a.count <- count(a)
b.count <- count(b)
我想要的结果应该看起来像这样:
freq.a freq.b
1 1
2 1 1
3 3 2
4 2 10
5 2 13
6 7 4
7 2 3
df <- merge(a.count, b.count, by ='x', all=TRUE)[2:3]
names(df) <- c('freq.a', 'freq.b')
df
freq.a freq.b
1 NA 1
2 1 1
3 2 3
4 10 2
5 13 2
6 4 7
7 3 2
如果你把你的数据放在长格式中(每个观察一行,带有它来自哪个样本的变量),那么你可以做一个应急 table:
data.frame(v=df.a, s='a') %>% rbind(data.frame(v=df.b, s='b')) %>%
xtabs(f=~v+s)
生产:
s
v a b
1 0 1
2 1 1
3 2 3
4 10 2
5 13 2
6 4 7
7 3 2
我想比较两个不同观察的样本频率。问题是第一个不包含第二个数字的整个范围。如果不编写 for 循环根据 count 返回的 x 值对它们进行排序,我怎么能将它们组合起来呢? 这是一个 MWE 以供澄清:
library(plyr)
a <- c(5, 4, 5, 7, 3, 5, 6, 5, 5, 4, 5, 5, 4, 5, 4, 7, 2, 4, 4, 5, 3, 6, 5, 6, 4, 4, 5, 4, 5, 5, 6, 7, 4)
b <- c(1, 3, 4, 6, 2, 7, 7, 4, 3, 6, 6, 3, 6, 6, 5, 6, 6, 5)
a.count <- count(a)
b.count <- count(b)
我想要的结果应该看起来像这样:
freq.a freq.b
1 1
2 1 1
3 3 2
4 2 10
5 2 13
6 7 4
7 2 3
df <- merge(a.count, b.count, by ='x', all=TRUE)[2:3]
names(df) <- c('freq.a', 'freq.b')
df
freq.a freq.b
1 NA 1
2 1 1
3 2 3
4 10 2
5 13 2
6 4 7
7 3 2
如果你把你的数据放在长格式中(每个观察一行,带有它来自哪个样本的变量),那么你可以做一个应急 table:
data.frame(v=df.a, s='a') %>% rbind(data.frame(v=df.b, s='b')) %>%
xtabs(f=~v+s)
生产:
s
v a b
1 0 1
2 1 1
3 2 3
4 10 2
5 13 2
6 4 7
7 3 2