【问题标题】:Data frame in R group by duplicated values in columnR组中的数据框按列中的重复值
【发布时间】:2020-02-15 11:39:22
【问题描述】:

我正在努力在 R 中的数据框中执行汇总/计数操作。

我认为这是因为 A 列中有值,这些值映射到 B 列中的至少两个条目。

下面的示例输入:

structure(list(exercise_id = c(10026L, 10027L, 10028L, 10029L, 
10030L, 10031L, 10032L, 10033L, 10034L, 10035L, 10036L, 10037L, 
10038L, 10039L, 10040L, 10041L, 10042L, 10043L, 10044L, 10045L, 
10046L, 10047L, 10048L, 10049L, 10050L, 10051L, 10052L, 10053L, 
10054L, 10060L, 10061L, 10062L, 10063L, 10064L, 10065L, 10066L, 
10067L, 10068L, 10069L, 10070L, 10071L, 10072L, 10073L, 10074L, 
10075L, 10076L, 10077L, 10078L, 10079L, 10080L, 10087L, 10088L, 
10089L, 10090L, 10091L, 10092L, 10093L, 10094L, 10095L, 10096L, 
10097L, 10098L, 10099L, 10100L, 10101L, 10102L, 10103L, 10104L, 
10105L, 10105L, 10107L, 10108L, 10109L, 10110L, 10111L, 10112L, 
10114L, 10115L, 10116L, 10117L, 10118L, 10119L, 10120L, 10121L, 
10122L, 10123L, 10124L, 10125L, 10126L, 10127L, 10128L, 10129L, 
10130L, 10131L, 10132L, 10133L, 10134L, 10136L, 10137L, 10138L, 
10139L, 10140L, 10141L, 10142L, 10143L, 10144L, 10145L, 10146L, 
10147L, 10148L, 10149L, 10150L, 10151L, 10152L, 10153L, 10155L, 
10156L, 10157L, 10158L, 10159L, 10160L, 10161L, 10162L, 10163L, 
10164L, 10165L, 10166L, 10167L, 10168L, 10169L, 10170L, 10171L, 
10172L, 10173L, 10174L, 10175L, 10176L, 10177L, 10178L, 10179L, 
10180L, 10181L, 10182L, 10183L, 10184L, 10185L, 10187L, 10188L, 
10189L, 10190L, 10194L, 10195L, 10196L, 10197L, 10198L, 10199L, 
10200L, 10201L, 10202L, 10203L, 10204L, 10205L, 10206L, 10214L, 
10215L, 10216L, 10217L, 10218L, 10219L, 10220L, 10221L, 10221L, 
10223L, 10224L, 10225L, 10226L, 10227L, 10228L, 10229L, 10235L, 
10236L, 10237L, 10238L, 10239L, 10378L, 10379L, 10380L, 10381L, 
10382L, 10383L, 10384L, 10385L, 10386L, 10387L, 10388L, 10389L, 
10390L, 10391L, 10392L, 10393L, 10394L, 10395L, 10396L, 10397L, 
10398L, 10399L, 10400L, 10401L, 10402L, 10403L, 10404L, 10405L, 
10462L, 10463L, 10464L, 10465L, 10466L, 10467L, 10468L, 10469L, 
10470L, 10471L, 10472L, 10473L, 10474L, 10475L, 10476L, 10477L, 
10478L, 10479L, 10480L, 10481L, 10482L, 10483L, 10484L, 10485L, 
10486L, 10487L, 10488L, 10489L, 10490L, 10491L, 10492L, 10493L, 
10494L, 10495L, 10496L, 10497L, 10498L, 10499L), objective_1 = c("Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Działania na liczbach naturalnych.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Liczby naturalne w dziesiątkowym układzie pozycyjnym.", 
"Liczby naturalne w dziesiątkowym układzie pozycyjnym.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych.", "Działania na liczbach naturalnych.", 
"Działania na liczbach naturalnych."), nested_level = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), row.names = c(27892L, 27893L, 
27894L, 27895L, 27896L, 27897L, 27898L, 27899L, 27900L, 27901L, 
27902L, 27903L, 28058L, 28059L, 28061L, 28063L, 28064L, 28065L, 
28066L, 28067L, 28068L, 28069L, 28071L, 28072L, 28246L, 28247L, 
28248L, 28249L, 28075L, 42795L, 42797L, 42799L, 42801L, 27904L, 
28076L, 28077L, 28078L, 28255L, 28257L, 28259L, 28260L, 28261L, 
28403L, 28405L, 28407L, 28335L, 28336L, 42805L, 42807L, 28392L, 
27917L, 27919L, 27921L, 27923L, 28082L, 28083L, 28085L, 28087L, 
28089L, 28091L, 28093L, 28095L, 28097L, 28098L, 28099L, 28272L, 
28401L, 28402L, 28404L, 42858L, 28356L, 42812L, 42813L, 42814L, 
42815L, 42791L, 27881L, 27882L, 27883L, 27884L, 27885L, 27886L, 
28040L, 27887L, 27888L, 28041L, 28042L, 28043L, 28044L, 28045L, 
28251L, 28252L, 28253L, 28254L, 28256L, 28258L, 28046L, 28354L, 
28355L, 28423L, 28424L, 28426L, 28427L, 28428L, 28429L, 28412L, 
28413L, 28414L, 28415L, 28101L, 28416L, 28102L, 28417L, 42808L, 
42809L, 28309L, 28310L, 28311L, 28312L, 28313L, 28314L, 28315L, 
28316L, 28317L, 28318L, 28319L, 28320L, 28321L, 28322L, 28323L, 
28324L, 28325L, 28326L, 28328L, 28330L, 28332L, 28294L, 28296L, 
28298L, 28300L, 28073L, 28074L, 28250L, 28345L, 28347L, 28349L, 
42831L, 42832L, 42834L, 42835L, 42836L, 27906L, 27907L, 27908L, 
28079L, 28080L, 28081L, 28262L, 28406L, 28425L, 42803L, 42804L, 
42806L, 28306L, 28307L, 28308L, 42810L, 42811L, 27925L, 27927L, 
28396L, 42859L, 28266L, 28397L, 28350L, 28351L, 28352L, 27928L, 
28100L, 42839L, 42841L, 42843L, 42846L, 42850L, 28124L, 28125L, 
28127L, 28129L, 28131L, 28132L, 28133L, 28134L, 27961L, 27962L, 
27963L, 27964L, 27966L, 27968L, 28135L, 28137L, 28139L, 28141L, 
28142L, 28143L, 28144L, 28145L, 28146L, 28147L, 28148L, 28111L, 
28113L, 28116L, 27988L, 27989L, 27990L, 27991L, 27992L, 27993L, 
27995L, 27996L, 27997L, 27998L, 27999L, 28002L, 28005L, 28007L, 
28170L, 28173L, 28176L, 28179L, 28181L, 28182L, 28183L, 28184L, 
28185L, 28187L, 28118L, 28190L, 28191L, 28192L, 28119L, 28120L, 
28022L, 28121L, 28122L, 28123L, 28016L, 28110L, 28019L, 28112L
), class = "data.frame")

我已经尝试过 dplyr 包,尤其是 group_by 和 summarise 功能。但我收到这样的错误消息:

Column `output$exercise_id` must be length 14 (the group size) or one, not 83329

这是我尝试过的:

output <- output %>% group_by(objective_1) %>% count(output$exercise_id)

【问题讨论】:

  • 不要认为您需要 $ 来引用 exercise_id 中的 count()。试试看:output &lt;- output %&gt;% group_by(objective_1) %&gt;% count(exercise_id)
  • 嗨 tomasu,这很好用,但它并没有真正对数据进行分组,因为计数将始终为 1。例如,我想看看目标 a 的计数是 12,对于目标b 计数是 8...

标签: r dataframe dplyr tidyr


【解决方案1】:

我们有几种方法可以解决这个问题。如果我们想查看exercise_idobjective_1 定义的组中有多少唯一值,我们可以使用n_distinct()

library(dplyr)

output %>% 
  group_by(objective_1) %>% 
  summarise(total = n_distinct(exercise_id))
#> # A tibble: 2 x 2
#>   objective_1                                           total
#>   <chr>                                                 <int>
#> 1 Dzialania na liczbach naturalnych.                      220
#> 2 Liczby naturalne w dziesiatkowym ukladzie pozycyjnym.    30

另一种选择可能是在您的 objective_1 变量上使用 count()

output %>% 
  count(objective_1)
#> # A tibble: 2 x 2
#>   objective_1                                               n
#>   <chr>                                                 <int>
#> 1 Dzialania na liczbach naturalnych.                      220
#> 2 Liczby naturalne w dziesiatkowym ukladzie pozycyjnym.    30

同样,基本选项是table()

table(output$objective_1)
#> 
#>                    Dzialania na liczbach naturalnych. 
#>                                                   220 
#> Liczby naturalne w dziesiatkowym ukladzie pozycyjnym. 
#>                                                    30

最后,我很喜欢library(janitor)中的tabyl()函数:

library(janitor)

output %>% 
  tabyl(objective_1)
#>                                            objective_1   n percent
#>                     Dzialania na liczbach naturalnych. 220    0.88
#>  Liczby naturalne w dziesiatkowym ukladzie pozycyjnym.  30    0.12

希望这会有所帮助!

【讨论】:

  • 你好 tomasu。这绝对有帮助。我真的很喜欢看门人的解决方案。因为它似乎是最强大的。谢谢!!
猜你喜欢
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2021-01-21
  • 1970-01-01
  • 2021-11-01
  • 2017-01-06
相关资源
最近更新 更多