我有一个长格式的数据集,我在其中添加了不同组的值。一些变量是因子变量,应保留在结果中。
mtcars$model <- as.factor(rownames(mtcars))
longmtcars <- rbind(mtcars, mtcars, mtcars)
longmtcars$vs <- ifelse(longmtcars$vs == 1, "Yes", "No")
result <- longmtcars %>%
group_by(factor(model)) %>%
summarise_if(is.numeric, sum)
result
# A tibble: 32 x 11
`factor(model)` mpg cyl disp hp drat wt qsec am gear carb
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AMC Javelin 45.6 24 912 450 9.45 10.3 51.9 0 9 6
2 Cadillac Fleetwood 31.2 24 1416 615 8.79 15.8 53.9 0 9 12
3 Camaro Z28 39.9 24 1050 735 11.2 11.5 46.2 0 9 12
4 Chrysler Imperial 44.1 24 1320 690 9.69 16.0 52.3 0 9 12
5 Datsun 710 68.4 12 324 279 11.6 6.96 55.8 3 12 3
我目前无法扩展的解决方案
#ugly solution
vsvar <- longmtcars[1:32, "vs"]
result <- cbind(result, vsvar)
result
factor(model) mpg cyl disp hp drat wt qsec am gear carb vsvar
1 AMC Javelin 45.6 24 912.0 450 9.45 10.305 51.90 0 9 6 No
2 Cadillac Fleetwood 31.2 24 1416.0 615 8.79 15.750 53.94 0 9 12 No
3 Camaro Z28 39.9 24 1050.0 735 11.19 11.520 46.23 0 9 12 Yes
这是正确的,但确实很难看,我将在Shiny App中使用它,这会造成麻烦,因此按当前方式进行操作是没有选择的。一站式解决方案中有吗?也可以使用data.table完成,但我不太熟悉。
答案 0 :(得分:1)
您可以将这些变量添加到group_by
子句中:
result <- longmtcars %>%
mutate_if(is.character, factor) %>%
group_by(model, vs) %>%
summarise_if(is.numeric, sum)
result
#> # A tibble: 32 x 12
#> # Groups: model [32]
#> model vs mpg cyl disp hp drat wt qsec am gear carb
#> <fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 AMC Javelin No 45.6 24 912 450 9.45 10.3 51.9 0 9 6
#> 2 Cadillac Fleetwood No 31.2 24 1416 615 8.79 15.8 53.9 0 9 12
#> 3 Camaro Z28 No 39.9 24 1050 735 11.2 11.5 46.2 0 9 12
答案 1 :(得分:0)
在基数R中,您可以使用Scenario.only(‘login’, (I, loginPage) => {
loginPage.sendForm(‘john@doe.com’,‘123456’);
I.see(‘Hello, John’);
});
。
Given('I'm on the log in page', (loginPage) => {
// From "features/basic.feature" {"line":8,"column":5}
loginPage.sendForm(‘john@doe.com’,‘123456’);
I.see(‘Hello, John’);
});