Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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 - Fatal编程技术网

获取dplyr中的最小值

获取dplyr中的最小值,r,dplyr,R,Dplyr,我想用dplyr编写一个代码,在这里我可以取最小值2 连续行 A <- data.frame( y = c("A", "B", "C", "D", "E", "F"), value = c(1, 2, 3, 4, 5, 6)) A # y value # 1 A 1 # 2 B 2 # 3 C 3 # 4 D 4 # 5 E 5 # 6 F 6 我想使用dplyr包 我使用的按名称分组的通用代码是 z <- x %>

我想用dplyr编写一个代码,在这里我可以取最小值2 连续行

A <- data.frame(
  y = c("A", "B", "C", "D", "E", "F"), 
  value = c(1, 2, 3, 4, 5, 6))
A
#   y value
# 1 A     1
# 2 B     2
# 3 C     3
# 4 D     4
# 5 E     5
# 6 F     6
我想使用dplyr包

我使用的按名称分组的通用代码是

z <- x %>%    
  group_by(name)%>%
  filter(value == min(value))
z%
分组单位(名称)%>%
过滤器(值==最小值)

我想不出如何在R或dplyr中“编码”连续行

您只需要创建一个适当的分组变量:

A %>% mutate(grp = rep(0:(n() - 1) %/% 2 ) %>%
  group_by(grp) %>%
  slice(which.min(x))
# # A tibble: 3 x 3
# # Groups:   grp [3]
#   y         x   grp
#   <fct> <dbl> <int>
# 1 A         1     1
# 2 C         3     2
# 3 E         5     3
A%>%突变(grp=rep(0:(n()-1)%/%2)%>%
分组依据(grp)%>%
切片(哪个.min(x))
##tibble:3 x 3
##分组:grp[3]
#y x玻璃钢
#     
#一一一一
#2 C 3 2
#3 E 5 3

您只需创建一个适当的分组变量:

A %>% mutate(grp = rep(0:(n() - 1) %/% 2 ) %>%
  group_by(grp) %>%
  slice(which.min(x))
# # A tibble: 3 x 3
# # Groups:   grp [3]
#   y         x   grp
#   <fct> <dbl> <int>
# 1 A         1     1
# 2 C         3     2
# 3 E         5     3
A%>%突变(grp=rep(0:(n()-1)%/%2)%>%
分组依据(grp)%>%
切片(哪个.min(x))
##tibble:3 x 3
##分组:grp[3]
#y x玻璃钢
#     
#一一一一
#2 C 3 2
#3 E 5 3

稍微不同的
tidyverse
可能是:

A %>%
 group_by(grp = gl(length(value)/2, 2)) %>%
 filter(value == min(value))

  y     value grp  
  <fct> <dbl> <fct>
1 A        1. 1    
2 C        3. 2    
3 E        5. 3
或者使用
top\n()
而不是
filter()

或:


与tidyverse稍有不同的可能性可能是:

A %>%
 group_by(grp = gl(length(value)/2, 2)) %>%
 filter(value == min(value))

  y     value grp  
  <fct> <dbl> <fct>
1 A        1. 1    
2 C        3. 2    
3 E        5. 3
或者使用
top\n()
而不是
filter()

或:



通过高亮显示代码并单击编辑器中的“代码格式”按钮(
{}
)或将代码缩进4个空格,将代码格式化为代码。通过高亮显示代码并单击编辑器中的“代码格式”按钮(
{}
)将代码格式化为代码如果原始数据有错误,请解释代码以便我使用,或者另一个选项是
A%%>%groupby(y=replace(y,c(FALSE,TRUE),y[c(TRUE,FALSE)])%%>%summary(value=min(value))
在示例数据上一次运行一行以帮助理解。首先,我们创建一个名为
grp
的新列,它是连续行的分组列。然后,我们按该列分组。然后,在每个组中,我们
切片
与最小x值对应的行。如果需要更多帮助,请将问题编辑为至少包括您得到的错误消息。最好有足够的样本数据来重现错误。我不理解天花板部分。此错误我在slice_impl(.data,dots)中得到错误:求值错误:(list)对象无法强制键入“double”。代码工作正常,直到%>%变异(grp=rep(1:天花板(n()/2),each=2))%%>%grp%%>%grp%%但当我尝试对其进行切片时给出错误在原始数据上给出错误,请您解释代码以便我使用,或者另一个选项是
A%%>%group by(y=replace(y,c(FALSE,TRUE),y[c(TRUE,FALSE)])%%>%summary(value=min(value))
在示例数据上一次运行一行以帮助理解。首先,我们创建一个名为
grp
的新列,它是连续行的分组列。然后,我们按该列分组。然后,在每个组中,我们
切片
与最小x值对应的行。如果需要更多帮助,请将问题编辑为至少包括您得到的错误消息。最好有足够的样本数据来重现错误。我不理解天花板部分。此错误我在slice_impl(.data,dots)中得到错误:求值错误:(list)对象无法强制键入“double”。代码工作正常,直到%>%变异(grp=rep(1:天花板(n()/2),each=2))%%>%groupby(grp)%%>%但是当我尝试切片它时,会给errorNice多样性!我想你需要像
gl(天花板(n()/2),2,length=n())
这样的东西来让
gl
处理奇数行。这也值得指出细微的区别:
filter(value==min(value))
将保留所有行的最小值,如果有联系。
top\u n
类似于
slice
,因为它将始终是每组1行。@Gregor感谢您的评论。是的,对于奇数,可以使用您建议的值。种类繁多!我想您需要类似
gl(天花板(n()/2),2,长度=n()的值
用于
gl
处理奇数行。还需要指出细微的区别:
filter(value==min(value))
将保留所有行的最小值(如果有关系)。
top\n
类似于
slice
,因为它将始终是每组1行。@Gregor感谢您的评论。是的,对于奇数,可以使用您建议的值。
A %>%
 group_by(grp = gl(length(value)/2, 2)) %>%
 top_n(-1, wt = value)
A %>%
 group_by(grp = (row_number()-1) %/% 2) %>%
 top_n(-1, wt = value)