Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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
r中的前5名和下5名使用组_by_R_Dplyr - Fatal编程技术网

r中的前5名和下5名使用组_by

r中的前5名和下5名使用组_by,r,dplyr,R,Dplyr,我正在寻找一个代码或功能,分配一个值的5个最高值和5个最低值。例如,这可能来自与以下类似的数据集: df注意:虽然我怀疑这只是样本数据,但在2010-01-31中有两个1s。这段代码解释了这一点,但如果不进行排序,输出看起来很奇怪。为此,我添加了arrange来显示它们 我在这里使用minu-rank,假设你不想要领带,总是想要前五名/后五名。另一种选择是densite\u rank,由于1的平局,它将标记2010-01-31中的前六名 库(dpyr) dat%>% 分组单位(日期)%>% 变异

我正在寻找一个代码或功能,分配一个值的5个最高值和5个最低值。例如,这可能来自与以下类似的数据集:


df注意:虽然我怀疑这只是样本数据,但在
2010-01-31
中有两个
1
s。这段代码解释了这一点,但如果不进行排序,输出看起来很奇怪。为此,我添加了
arrange
来显示它们

我在这里使用
minu-rank
,假设你不想要领带,总是想要前五名/后五名。另一种选择是
densite\u rank
,由于
1
的平局,它将标记2010-01-31
中的前六名

库(dpyr)
dat%>%
分组单位(日期)%>%
变异(
R=最小秩(值),
当(
R<6~“5w”,
R>n()-5~“5b”,
真~NA_字符)
) %>%
解组()%>%
安排(日期、值)%>%
打印(n=99)
##A tible:30 x 4
#日期值rquox
#            
#1 2010-01-31 11 15W
#2 2010-01-31 11 5w
#3 2010-01-31 23 5w
#4 2010-01-31 3 4 5w
#5 2010-01-31 45 5w
#  6 2010-01-31     5     6  
#  7 2010-01-31     6     7  
#  8 2010-01-31     7     8  
#  9 2010-01-31     8     9  
# 10 2010-01-31     9    10  
# 11 2010-01-31    10    11  
#12 2010-01-31 11 12 5b
#13 2010-01-31 12 13 5b
#14 2010-01-31 13 14 5b
#15 2010-01-31 14 15 5b
#16 2010-01-31 15 16 5b
#17 2010-02-28 21 5w
#18 2010-02-28 32 5w
#19 2010-02-28 4 3 5w
#20 2010-02-28 5 4 5w
#21 2010-02-28 6 5 5w
# 22 2010-02-28     7     6  
# 23 2010-02-28     8     7  
# 24 2010-02-28     9     8  
# 25 2010-02-28    10     9  
#26 2010-02-28 110 5b
#27 2010-02-28 1211 5b
#282010-02-2813125B
#29 2010-02-28 14 13 5b
#30 2010-02-28 15 14 5b

使用新发现的数据编辑。我推断应该忽略
NA
值,而只考虑排名靠前的值。这显示了没有10个总值行的情况,因为
2010-02-28
只提供了4个
5b

dat%>%
分组单位(日期)%>%
变异(
R=最小秩(值),
当(
R<6~“5w”,
R>max(R,na.rm=TRUE)-5~“5b”,
真~NA_字符)
) %>%
解组()%>%
安排(日期、值)%>%
打印(n=99)
##A tible:30 x 4
#日期值rquox
#            
#1 2010-01-31 11 15W
#2 2010-01-31 11 5w
#3 2010-01-31 23 5w
#4 2010-01-31 3 4 5w
#5 2010-01-31 45 5w
#  6 2010-01-31     5     6  
#7 2010-01-31 6 7 5b
#8 2010-01-31 7 8 5b
#9 2010-01-31 8 9 5b
#10 2010-01-319105B
#11 2010-01-31 15 11 5b
#12 2010-01-31不适用
#13 2010-01-31不适用
#14 2010-01-31不适用
#15 2010-01-31不适用
#16 2010-01-31不适用
#17 2010-02-28 21 5w
#18 2010-02-28 32 5w
#19 2010-02-28 4 3 5w
#20 2010-02-28 5 4 5w
#21 2010-02-28 6 5 5w
#22 2010-02-28 76 5b
#23 2010-02-28 87 5b
#24 2010-02-28 9 8 5b
#25 2010-02-28 15 9 5b
#26 2010-02-28不适用
#27 2010-02-28不适用
#28 2010-02-28不适用
#29 2010-02-28不适用
#30 2010-02-28不适用
试试这个

library(dplyr)

DF <- data.frame(Date = c(rep("2010-01-31",16), rep("2010-02-28", 14)), Value=c(rep(1:15,2)))

DF %>% 
  group_by(Date) %>%
  mutate(n = row_number(),
         nn = 1 + max(n) - n) %>%
  ungroup() %>%
  filter(n <= 5 | nn <= 5) %>%
  mutate(v1 = if_else(n <= 5, "5b", "5w")) %>%
  select(-n, -nn)
库(dplyr)
DF%
分组单位(日期)%>%
变异(n=行数(),
nn=1+最大值(n)-n]>%
解组()%>%

筛选器(n请添加您预期的输出。运行此数据时,如果值列中存在缺少的值,则此数据似乎不起作用。是否有办法解决此问题?我只能对您提供的示例数据进行操作。请更新您的示例以反映您的意思。请回答您的问题并在其中添加上下文。
# A tibble: 20 x 3
   Date       Value v1   
   <fct>      <int> <chr>
 1 2010-01-31     1 5b   
 2 2010-01-31     2 5b   
 3 2010-01-31     3 5b   
 4 2010-01-31     4 5b   
 5 2010-01-31     5 5b   
 6 2010-01-31    12 5w   
 7 2010-01-31    13 5w   
 8 2010-01-31    14 5w   
 9 2010-01-31    15 5w   
10 2010-01-31     1 5w   
11 2010-02-28     2 5b   
12 2010-02-28     3 5b   
13 2010-02-28     4 5b   
14 2010-02-28     5 5b   
15 2010-02-28     6 5b   
16 2010-02-28    11 5w   
17 2010-02-28    12 5w   
18 2010-02-28    13 5w   
19 2010-02-28    14 5w   
20 2010-02-28    15 5w