Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dplyr筛选条件子集数据集_R_Dplyr_Subset - Fatal编程技术网

使用dplyr筛选条件子集数据集

使用dplyr筛选条件子集数据集,r,dplyr,subset,R,Dplyr,Subset,我想对一个数据帧进行子集,以从所有列中收集信息 我将使用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

我想对一个数据帧进行子集,以从所有列中收集信息

我将使用
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(属)%%>%count(n)
##一个tibble:3×2
#n nn
#   
#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%%>%count(属)%%>%filter(n==2)
##一个tibble:2×2
#属
#    
#1马2
#2秃鹫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
msleep[msleep$genus%在%c中('equis','Vulpes'),]
##一个tibble:4×11
#名称属vore顺序守恒睡眠总睡眠rem睡眠周期清醒脑体
#                                                     
#1匹驯养的野马2.9 0.6 1.00 21.1 0.6550 521.00
#2头驯养的毛驴3.1 0.4 NA 20.9 0.4190 187.00
#3北极狐秃鹫肉食动物12.5 NA NA 11.5 0.0445 3.38
#4红狐秃鹫肉食动物9.82.40.35 14.20.0504 4.23
任何获得预期产出的替代方法也值得赞赏


ps:有没有更好的方法来观察频率的频率?或者查看筛选条件(此处:n==2)?

我们可以使用
分组,然后直接
筛选
,而不是通过
计数
方法

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
msleep%>%
按(属)分组%>%
过滤器(n()==2)
#一个tibble:4x11
#群:属[2]
#名称属vore顺序守恒睡眠总睡眠rem睡眠周期清醒脑体
#                                                     
#1匹驯养的野马2.9 0.6 1.00 21.1 0.6550 521.00
#2头驯养的毛驴3.1 0.4 NA 20.9 0.4190 187.00
#3北极狐秃鹫肉食动物12.5 NA NA 11.5 0.0445 3.38
#4红狐秃鹫肉食动物9.82.40.35 14.20.0504 4.23

感谢您的帮助性回答。查看频率的最佳方式是什么?@Prradep抱歉,我没有听清你的问题。你是想得到一定比例的频率吗?很抱歉没有清晰地沟通。如何查看列中数值频率的分布/汇总?我的意思是如何更好地实现
msleep%%>%count(genus)%%>%count(n)
的输出?@Prradep如果你在'n'上做第二次
count
,那将只提供关于1、2和3的数量的信息,而不会给你
genus
,它与
表(table(table(msleep$genus))
相同,谢谢。基本方法来救援!dplyr中没有奇特的函数吗?