Mat*_*ica 2 r rows dataframe dplyr tidyverse
对于下面的数据框,
df <- data.frame(id = c(rep(101, 4), rep(202, 3)),
status = c("a","b","c","d", "a", "b", "c"),
wt = c(100,200,100,105, 20,22,25),
ht = c(5.3,5.2,5,5.1, 4.3,4.2,4.1))
df
id status wt ht
1 101 a 100 5.3
2 101 b 200 5.2
3 101 c 100 5.0
4 101 d 105 5.1
5 202 a 20 4.3
6 202 b 22 4.2
7 202 c 25 4.1
Run Code Online (Sandbox Code Playgroud)
我想得到下面的输出:
> output
id status wt ht
1 101 a 100 5.3
2 101 b 200 5.2
3 101 c 100 5.0
4 101 d 105 5.1
5 101 sum 505 20.6
6 202 a 20 4.3
7 202 b 22 4.2
8 202 c 25 4.1
9 202 sum 67 12.6
Run Code Online (Sandbox Code Playgroud)
df 来自一系列管道,我不想停止它并执行类似的操作
output <- rbind(df[1:4,],
c(101, "sum", colSums(df[1:4, c(3,4)])),
df[5:7,],
c(202, "sum", colSums(df[5:7, c(3,4)])))
Run Code Online (Sandbox Code Playgroud)
我正在寻找整洁、好看的!实现这一目标的方法。非常感谢任何帮助或想法。
df %>%
....
Run Code Online (Sandbox Code Playgroud)
我们可以adorn_totals
在按“id”分组后使用。
library(dplyr)\nlibrary(janitor)\ndf %>% \n group_by(id) %>%\n group_modify(~ .x %>% \n adorn_totals(cols = c(wt, ht), name = 'sum')) %>%\n ungroup\n
Run Code Online (Sandbox Code Playgroud)\n-输出
\n# A tibble: 9 \xc3\x97 4\n id status wt ht\n <dbl> <chr> <dbl> <dbl>\n1 101 a 100 5.3\n2 101 b 200 5.2\n3 101 c 100 5 \n4 101 d 105 5.1\n5 101 sum 505 20.6\n6 202 a 20 4.3\n7 202 b 22 4.2\n8 202 c 25 4.1\n9 202 sum 67 12.6\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
104 次 |
最近记录: |