将行添加到计算所有数字列总和的数据框
add row to a data frame that calculates sums of all numeric columns
我有一个包含前两列字符的数据框,其余为双列。
我想在底部添加一行,在前两列中有单词 'Total' 并计算其余列值的总和。
例如让我们使用:
segment<- c('seg1', 'seg1', 'seg2', 'seg2', 'seg3', 'seg3')
subSegment<- c('subseg1', 'subseg2', 'subseg1', 'subseg2', 'subseg1', 'subseg2')
var.1<- c(100, 20, 30, 50, 40, 40)
var.2<- c(200, 30, 30, 70, 30, 140)
var.3<- c(50, 50, 40, 20, 30, 40)
var.4<- c(60, 50, 35, 53, 42, 20)
df<- data.frame(segment, subSegment, var.1, var.2, var.3, var.4)
我是这样做的:
df%>% # now need to add a row with totals
add_row( segment="Total",subSegment="Total", var.1 = sum(.$var.1), var.2= sum(.$var.2), var.3 = sum(.$var.3), var.4 = sum(.$var.4))
显然,名称和值只是示例,但在我的实际问题中,我有超过 8 个变量,这样做是浪费时间。
我正在寻找一个更通用的解决方案,它只对 add_row 说前两列“总计”,然后对第三列之后的所有列说 ....=sum(.$....)
。
也许使用 sapply(df[c(3:ncol(df))]
.
之类的东西
管理员包已准备就绪:
library(janitor)
df %>%
adorn_totals("row", fill = "Total")
segment subSegment var.1 var.2 var.3 var.4
seg1 subseg1 100 200 50 60
seg1 subseg2 20 30 50 50
seg2 subseg1 30 30 40 35
seg2 subseg2 50 70 20 53
seg3 subseg1 40 30 30 42
seg3 subseg2 40 140 40 20
Total Total 280 500 230 260
让我们添加一个额外的行,Total
,Total
在两列中,让我们计算从第 3 列开始到结束 ncol(df)
的 colSums
列的总和].
df<- rbind(df, c("Total", "Total", colSums(df[,3:ncol(df)], na.rm = TRUE)))
我有一个包含前两列字符的数据框,其余为双列。 我想在底部添加一行,在前两列中有单词 'Total' 并计算其余列值的总和。
例如让我们使用:
segment<- c('seg1', 'seg1', 'seg2', 'seg2', 'seg3', 'seg3')
subSegment<- c('subseg1', 'subseg2', 'subseg1', 'subseg2', 'subseg1', 'subseg2')
var.1<- c(100, 20, 30, 50, 40, 40)
var.2<- c(200, 30, 30, 70, 30, 140)
var.3<- c(50, 50, 40, 20, 30, 40)
var.4<- c(60, 50, 35, 53, 42, 20)
df<- data.frame(segment, subSegment, var.1, var.2, var.3, var.4)
我是这样做的:
df%>% # now need to add a row with totals
add_row( segment="Total",subSegment="Total", var.1 = sum(.$var.1), var.2= sum(.$var.2), var.3 = sum(.$var.3), var.4 = sum(.$var.4))
显然,名称和值只是示例,但在我的实际问题中,我有超过 8 个变量,这样做是浪费时间。
我正在寻找一个更通用的解决方案,它只对 add_row 说前两列“总计”,然后对第三列之后的所有列说 ....=sum(.$....)
。
也许使用 sapply(df[c(3:ncol(df))]
.
管理员包已准备就绪:
library(janitor)
df %>%
adorn_totals("row", fill = "Total")
segment subSegment var.1 var.2 var.3 var.4
seg1 subseg1 100 200 50 60
seg1 subseg2 20 30 50 50
seg2 subseg1 30 30 40 35
seg2 subseg2 50 70 20 53
seg3 subseg1 40 30 30 42
seg3 subseg2 40 140 40 20
Total Total 280 500 230 260
让我们添加一个额外的行,Total
,Total
在两列中,让我们计算从第 3 列开始到结束 ncol(df)
的 colSums
列的总和].
df<- rbind(df, c("Total", "Total", colSums(df[,3:ncol(df)], na.rm = TRUE)))