我想将数据框子集化以收集来自所有列的信息。
我将使用msleep
数据集解释问题。
library(msleep)
我查看了列genus
频率的频率,以查看频率的分布。
msleep %>% count(genus) %>% count(n)
## A tibble: 3 × 2
# n nn
# <int> <int>
#1 1 73
#2 2 2
#3 3 2
我想提取主列中具有两次值的所有行。
msleep %>% count(genus) %>% filter(n==2)
## A tibble: 2 × 2
# genus n
# <chr> <int>
#1 Equus 2
#2 Vulpes 2
如何达到以下预期产量?
预期产出:
msleep[msleep$genus %in% c('Equus','Vulpes'),]
## A tibble: 4 × 11
# name genus vore order conservation sleep_total sleep_rem sleep_cycle awake brainwt bodywt
# <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Horse Equus herbi Perissodactyla domesticated 2.9 0.6 1.00 21.1 0.6550 521.00
#2 Donkey Equus herbi Perissodactyla domesticated 3.1 0.4 NA 20.9 0.4190 187.00
#3 Arctic fox Vulpes carni Carnivora <NA> 12.5 NA NA 11.5 0.0445 3.38
#4 Red fox Vulpes carni Carnivora <NA> 9.8 2.4 0.35 14.2 0.0504 4.23
获得预期输出的任何其他方式也受到赞赏。
ps:有没有更好的方法来查看频率的频率?或者查看过滤条件(这里:n == 2)?
答案 0 :(得分:1)
我们可以直接使用group_by
然后使用filter
,而不是通过count
方法
msleep %>%
group_by(genus) %>%
filter(n() ==2)
# A tibble: 4 x 11
# Groups: genus [2]
# name genus vore order conservation sleep_total sleep_rem sleep_cycle awake brainwt bodywt
# <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Horse Equus herbi Perissodactyla domesticated 2.9 0.6 1.00 21.1 0.6550 521.00
#2 Donkey Equus herbi Perissodactyla domesticated 3.1 0.4 NA 20.9 0.4190 187.00
#3 Arctic fox Vulpes carni Carnivora <NA> 12.5 NA NA 11.5 0.0445 3.38
#4 Red fox Vulpes carni Carnivora <NA> 9.8 2.4 0.35 14.2 0.0504 4.23