我不确定标题应该是什么,也许其他用户可以编辑它。谢谢。
我有一个数据:
date sum.A_1 sum.A_2 sum.A_3 sum.B_1 sum.B_2 sum.B_3
201101 245726 7951 81732 172 344 172
201102 1066407 34094 371868 793 1586 793
201103 1608750 51527 557677 1203 2406 1203
我想创建 1个新行和 2个新列。
结果如下:
date sum.A_1 sum.A_2 sum.A_3 sum.B_1 sum.B_2 sum.B_3 SUM.A SUM.B
201101 245726 7951 81732 172 344 172 335409 688
201102 1066407 34094 371868 793 1586 793 1472369 3172
201103 1608750 51527 557677 1203 2406 1203 2217954 4812
TOTAL 2920883 93572 1011277 2168 4336 2168 4025732 8672
我想创建2个新列SUM.A
和SUM.B
,然后创建1个新行TOTAL
。
SUM.A
总结了sum.A_1 : sum.A_3
; SUM.B
总和为sum.B_1 : sum.B_3
TOTAL
由每列汇总。
数据
data <- "date sum.A_1 sum.A_2 sum.A_3 sum.B_1 sum.B_2 sum.B_3
1: 201101 245726 7951 81732 172 344 172
2: 201102 1066407 34094 371868 793 1586 793
3: 201103 1608750 51527 557677 1203 2406 1203
"
data <- read.table(text = data, header = T)
data <- as.data.table(data)
有什么建议吗?
更新
我弄清楚每行的总和,但仍无法解决每列的总和
我浏览了StackOverFlow并看到了2个有用的资源
R: colSums when not all columns are numeric
How do I add a row to a data frame with totals?
所以,我试试我的数据:
rownames(data) <- data$date
addmargins(as.table(as.matrix(data[-1])), 1)
# Error in FUN(newX[, i], ...) : invalid 'type' (character) of argument
data["TOTAL", .SDcols = grep("sum.", names(data))] <- sapply(colSums(data), is.numeric)
# Error in colSums(data) : 'x' must be numeric
是否有使用data.table
方式的解决方案?
已解决
janitor::adorn_totals(data, "row")