我们假设我有一个名为DT %>%
group_by(Country) %>%
select(a, b, c, d, e, f)%>%
mutate(max = max())
的数据框。我想根据"国家"进行分组。列,并找到列B,C,D,E,F的最大值。然后,我想创建名为B_max,C_max,D_max,E_max和F_max的新列,每列具有最大值。
我可以在Base R中通过一长串命令轻松完成此操作。我想知道在dplyr中是否有一种更简约的方法可以做到这一点?所以,例如:
{{1}}
这使我获得了按国家/地区折叠的数据框中的正确最大值。那我怎么会解开这个数据框并创建所有a_max,b_max,c_max等等?
答案 0 :(得分:3)
以下是使用mtcars
数据集的解决方案:
library(dplyr)
mtcars %>%
group_by(cyl) %>%
select(cyl, disp, hp, drat) %>%
mutate_all(funs(max = max)) %>%
ungroup()
# # A tibble: 32 x 7
# cyl disp hp drat disp_max hp_max drat_max
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 6.00 160 110 3.90 258 175 3.92
# 2 6.00 160 110 3.90 258 175 3.92
# 3 4.00 108 93.0 3.85 147 113 4.93
# 4 6.00 258 110 3.08 258 175 3.92
# 5 8.00 360 175 3.15 472 335 4.22
# 6 6.00 225 105 2.76 258 175 3.92
# 7 8.00 360 245 3.21 472 335 4.22
# 8 4.00 147 62.0 3.69 147 113 4.93
# 9 4.00 141 95.0 3.92 147 113 4.93
# 10 6.00 168 123 3.92 258 175 3.92
# # ... with 22 more rows
请注意:(a)您必须在select
中包含分组变量,否则该过程会强制将其包含在内并向您显示警告,(b)您需要在funs()
内使用_max
mutate_all如果你想拥有mutate_all
前缀并保留原始列,(c)分组变量不受funs()
的影响。
否则,如果您不使用mtcars %>%
group_by(cyl) %>%
select(cyl, disp, hp, drat) %>%
mutate_all(max) %>%
ungroup()
# # A tibble: 32 x 4
# cyl disp hp drat
# <dbl> <dbl> <dbl> <dbl>
# 1 6.00 258 175 3.92
# 2 6.00 258 175 3.92
# 3 4.00 147 113 4.93
# 4 6.00 258 175 3.92
# 5 8.00 472 335 4.22
# 6 6.00 258 175 3.92
# 7 8.00 472 335 4.22
# 8 4.00 147 113 4.93
# 9 4.00 147 113 4.93
# 10 6.00 258 175 3.92
# # ... with 22 more rows
,它将如下所示:
select
您可以看到,在这种情况下,原始列被最大值替换,因为它们具有相同的名称。
如果您想要遵循相同的方法,但没有mutate_at
以保留所有原始列,则可以使用library(dplyr)
mtcars %>%
group_by(cyl) %>%
mutate_at(vars(disp,hp,drat), funs(max = max)) %>%
ungroup()
# # A tibble: 32 x 14
# mpg cyl disp hp drat wt qsec vs am gear carb disp_max hp_max drat_max
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 21.0 6.00 160 110 3.90 2.62 16.5 0 1.00 4.00 4.00 258 175 3.92
# 2 21.0 6.00 160 110 3.90 2.88 17.0 0 1.00 4.00 4.00 258 175 3.92
# 3 22.8 4.00 108 93.0 3.85 2.32 18.6 1.00 1.00 4.00 1.00 147 113 4.93
# 4 21.4 6.00 258 110 3.08 3.22 19.4 1.00 0 3.00 1.00 258 175 3.92
# 5 18.7 8.00 360 175 3.15 3.44 17.0 0 0 3.00 2.00 472 335 4.22
# 6 18.1 6.00 225 105 2.76 3.46 20.2 1.00 0 3.00 1.00 258 175 3.92
# 7 14.3 8.00 360 245 3.21 3.57 15.8 0 0 3.00 4.00 472 335 4.22
# 8 24.4 4.00 147 62.0 3.69 3.19 20.0 1.00 0 4.00 2.00 147 113 4.93
# 9 22.8 4.00 141 95.0 3.92 3.15 22.9 1.00 0 4.00 2.00 147 113 4.93
# 10 19.2 6.00 168 123 3.92 3.44 18.3 1.00 0 4.00 4.00 258 175 3.92
# # ... with 22 more rows
代替:
pipeline{
agent none
stages {
stage("Unit Testing"){
agent { label 'maven-build-slave' }
steps{
}
}
stage('Sonar Scanner - Quality Gates') {
agent { label 'maven-build-slave' }
steps{
}
}
stage("Integration"){
agent { label 'integration-slave' }
steps{
}
}
stage('SoapUI') {
agent { label 'integration-slave' }
steps{
}
}
}
}