group_by语句后的TIBLES和data.frames有什么不同

group_by语句后的TIBLES和data.frames有什么不同,r,dataframe,dplyr,sample,tibble,R,Dataframe,Dplyr,Sample,Tibble,如果我拿一个tibble试着采样,效果很好 dft <- tibble(a=rnorm(200),b=seq.int(1,200),c=sample(LETTERS[1:26],200,replace = T)) sample_frac(dft,.5) # A tibble: 100 x 3 a b c <dbl> <int> <chr> 1 -0.233 58 S 2 0.0529 82 Y

如果我拿一个tibble试着采样,效果很好

dft <- tibble(a=rnorm(200),b=seq.int(1,200),c=sample(LETTERS[1:26],200,replace = T))
sample_frac(dft,.5)
# A tibble: 100 x 3
     a     b c    
 <dbl> <int> <chr>
1 -0.233     58 S    
2  0.0529    82 Y    
3  0.371     31 S    
4  0.978    136 Z    
5  0.878    106 S    
6  0.253     46 D    
7 -1.07      16 W    
8 -1.98     193 Y    
9 -0.890     51 H    
10  0.151     75 A    
# ... with 90 more rows
dft%计数()
样本分数(dft,.5)
#一个tibble:0x2
#组别:c[0]
# ... 有两个变量:c,n
如果我将TIBLE强制为data.frame,则采样有效。 这个问题是一个bug,在一段时间前就解决了,所以我猜这不是一个容易修复的问题


TIBLES和data.frames有什么不同之处,它们会导致类似这样的问题?

有使用
group\u by
生成的属性。如果转换为
data.frame
,则这些值将丢失,看起来
c
的每个值只有一行。如果在一行上使用
%%>%sample\u frac(0.5)
,它将返回0行TIBLE。例如:
data.frame(a=1)%%>%sample\u frac(.5)
返回0行TIBLE。我不认为这与Tibble和data之间的差异有任何关系。Frames这将起作用:
dft%>%count(c)%%>%sample\u frac(.5)
。除了@Ryan的评论外:请注意,您尝试从中取样的每个组只有一个观察。@Ryan如果您使用
sample\u frac(as.data.frame(dft),.5)
,它会起作用,这是因为当您使用
as.data.frame
时,您正在删除这些组。
dft <- dft %>% group_by(c) %>% count()              
sample_frac(dft,.5)
# A tibble: 0 x 2
# Groups:   c [0]
# ... with 2 variables: c <chr>, n <int>