为何slice_head返回行数超出指定n?如何仅获取DataFrame首行?
问题
创建了一个7行的tibble数据框,期望获取整个数据框的第一行:
library(tibble) df <- tibble( group = rep(c("b", "c", "a"), c(1, 2, 4)), x = runif(7) ) # 数据框内容 df # A tibble: 7 × 2 group x <chr> <dbl> 1 b 0.269 2 c 0.0697 3 c 0.705 4 a 0.772 5 a 0.513 6 a 0.841 7 a 0.896
但使用group_by(group) %>% slice_head(n = 1)后,返回了每个分组的首行(共3行),而非预期的一行,需要实现仅返回整个数据框第一行的需求。
解决方案
问题出在多了group_by(group)步骤——分组后slice_head(n=1)会对每个分组单独取首行,所以得到3行结果。去掉分组操作,直接对整个数据框调用取行函数即可,以下是几种常用方法:
方法1:直接用slice_head
df %>% slice_head(n = 1)
方法2:简洁的slice调用
df %>% slice(1)
方法3:基础R的head函数
head(df, 1)
以上三种方法都会返回整个数据框的第一行:
# A tibble: 1 × 2 group x <chr> <dbl> 1 b 0.269
内容的提问来源于stack exchange,提问作者Nina van Bruggen
相关产品推荐
相关产品推荐

