R 使用给定权重(频率)随机采样数据帧行

R 使用给定权重(频率)随机采样数据帧行,r,dplyr,R,Dplyr,我有一个以下格式的数据框:一列包含原始序列,另一列包含序列发生次数,其他列具有其他特征 c1 <- c(324, 213, 122, 34) c2 <- c("SDOIHHFOEKN", "SDIUFONBSD", "DSLIHFEIHDFS", "DOOIUDBD") c3 <- c("G", "T", "U", "T") df <- data.frame(count = c1, seq = c2, other = c3) c1使用sample.int表示速度: s

我有一个以下格式的数据框:一列包含原始序列,另一列包含序列发生次数,其他列具有其他特征

c1 <- c(324, 213, 122, 34)
c2 <- c("SDOIHHFOEKN", "SDIUFONBSD", "DSLIHFEIHDFS", "DOOIUDBD")
c3 <- c("G", "T", "U", "T")

df <- data.frame(count = c1, seq = c2, other = c3)

c1使用sample.int表示速度:

sampled_df <- df[sample.int(nrow(df), 300, replace = TRUE, prob = df$count),] %>% 
group_by(seq) %>% 
summarize(count = n(), other=unique(other)) %>% 
as.data.frame

> sampled_df
           seq count other
1     DOOIUDBD    21     T
2 DSLIHFEIHDFS    53     U
3   SDIUFONBSD   102     T
4  SDOIHHFOEKN   124     G
sampled_df%
分组依据(序号)%>%
汇总(计数=n(),其他=唯一(其他))%>%
as.data.frame
>取样测向
顺序计数其他
1桶21吨
2个DSLIHFEIHDFS 53 U
3 SDIUFONBSD 102吨
4 SDOIHHFOKN 124克

sample
允许概率,因此您可以尝试类似的方法:
sample(c2300,replace=TRUE,prob=c1/sum(c1))
@MikeH。但是,我怎样才能得到最终数据帧中每个序列的实际计数呢?这会保持相对频率不变,但不会给我一个绝对计数。谢谢您想对序列进行采样,然后对样本进行计数?如果我还有18个其他列,它们都是特定于每个序列的,那么这将如何工作?我在这里看到,您必须特别提到
其他
,但对于其他18个变量,我不希望这样做。谢谢我可以看到两种方法:你可以在
查看dplyr
summary\u,或者如果你想深入dplyr的话,可以查看
summary\u all
。否则,您可以使用
seq
作为键,将新的data.frame与原始数据进行
合并。我更喜欢第二种方法,因为它只是注释,不太复杂。