group_by语句后的TIBLES和data.frames有什么不同
如果我拿一个tibble试着采样,效果很好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
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>