slice_head 返回的行数为什么太多,特别是超过我指定的 ‘n’?

huangapple go评论82阅读模式
英文:

Why does slice_head return too many rows, specifically more than the 'n' I specified?

问题

当创建一个包含7行的数据框时,我想要返回数据框的第一行。

  1. df <- tibble(
  2. group = rep(c("b", "c", "a"), c(1, 2, 4)),
  3. x = runif(7)
  4. )
  5. df

当我进行切片时,每个组返回一行,但我只想返回一行。

  1. df %>%
  2. group_by(group) %>%
  3. slice_head(n = 1)

如何只返回一行?

英文:

When making a dataframe of 7 rows I want to return the first row of the dataframe.

  1. df &lt;- tibble(
  2. group = rep(c(&quot;b&quot;, &quot;c&quot;, &quot;a&quot;), c(1, 2, 4)),
  3. x = runif(7)
  4. )
  5. df
  6. # A tibble: 7 &#215; 2
  7. group x
  8. &lt;chr&gt; &lt;dbl&gt;
  9. 1 b 0.269
  10. 2 c 0.0697
  11. 3 c 0.705
  12. 4 a 0.772
  13. 5 a 0.513
  14. 6 a 0.841
  15. 7 a 0.896

When I slice, a row per group is returned but I only want one row returned.

  1. df %&gt;%
  2. group_by(group) %&gt;%
  3. slice_head(n = 1)
  4. # A tibble: 3 &#215; 2
  5. # Groups: group [3]
  6. group x
  7. &lt;chr&gt; &lt;dbl&gt;
  8. 1 a 0.772
  9. 2 b 0.269
  10. 3 c 0.0697

How can I return only one row?

答案1

得分: 3

这个问题可以通过取消对数据框进行分组来解决。
解决方案:

  1. df %>%
  2. group_by(group) %>%
  3. ungroup() %>%
  4. slice_head(n = 1)
  5. # A tibble: 1 × 2
  6. group x
  7. <chr> <dbl>
  8. 1 b 0.269

(请注意,这是一段R代码,其中包含了一些数据框操作,不需要翻译的部分已经保留原文。)

英文:

This can be solved by ungrouping your dataframe.
Solution:

  1. df %&gt;%
  2. group_by(group) %&gt;%
  3. ungroup() %&gt;%
  4. slice_head(n = 1)
  5. # A tibble: 1 &#215; 2
  6. group x
  7. &lt;chr&gt; &lt;dbl&gt;
  8. 1 b 0.269

huangapple
  • 本文由 发表于 2023年2月6日 18:43:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/75360248.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定