将总计行 and/or 列附加到 R 中的 data.frame
Append a totals row and/or column to a data.frame in R
之前,我使用 janitor
包中的 adorn_totals
函数将行和列的总数添加到 data.frame。 data.frame 的内容是 count,所以没问题:
RegionSize
size KUALA LUMPUR OTHERS PENANG SELANGOR DARUL EHSAN TOTAL
tiny 20 3 1 0 24
small 164 120 20 90 394
medium 100 69 0 0 169
big 0 293 106 0 399
TOTAL 284 485 127 90 986
现在我正在研究 data.frame,其中每个单元格都是一个比例。我需要总行和总列,但在这种情况下不能使用 adorn_totals
,因为操作顺序 return 错误的值。
所以我有三个单独的表:
Summary
size KUALA LUMPUR OTHERS PENANG SELANGOR DARUL EHSAN
1 tiny 0.000 0.000 0.000 0.000
2 small 435.344 245.598 333.317 272.342
3 medium 187.874 9656.649 0.000 0.000
4 big 0.000 116.861 138.366 0.000
RegionTotals
experience region1
1: 156.523 PENANG
2: 272.342 SELANGOR DARUL EHSAN
3: 343.998 KUALA LUMPUR
4: 296.601 OTHERS
SizeTotals
experience size
1: 0.000 tiny
2: 348.692 small
3: 136.207 big
4: 223.415 medium
overallTotal
experience
1: 276.613
考虑到区域和大小可能会发生变化,我如何才能实现以下结果?例如,有时我不会有区域“OTHERS”或大小“BIG”,具体取决于我获得的数据。我怎样才能做到这一点:
Summary
size KUALA LUMPUR OTHERS PENANG SELANGOR DARUL EHSAN TOTAL
1 tiny 0.000 0.000 0.000 0.000 0.000
2 small 435.344 245.598 333.317 272.342 348.692
3 medium 187.874 9656.649 0.000 0.000 223.415
4 big 0.000 116.861 138.366 0.000 136.207
5. TOTAL 343.998 296.601 156.523 272.342 276.613
您可以使用 rbind 向您的数据框添加一行,例如:
total <- c(size="TOTAL", apply(x[,-1], FUN=sum, MAR=2)
rbind(x, total)
同理,可以使用cbind添加一列。唯一棘手的部分是您必须从求和中省略非数字列:这就是我使用索引 -1 的原因,它删除了第一列。
之前,我使用 janitor
包中的 adorn_totals
函数将行和列的总数添加到 data.frame。 data.frame 的内容是 count,所以没问题:
RegionSize
size KUALA LUMPUR OTHERS PENANG SELANGOR DARUL EHSAN TOTAL
tiny 20 3 1 0 24
small 164 120 20 90 394
medium 100 69 0 0 169
big 0 293 106 0 399
TOTAL 284 485 127 90 986
现在我正在研究 data.frame,其中每个单元格都是一个比例。我需要总行和总列,但在这种情况下不能使用 adorn_totals
,因为操作顺序 return 错误的值。
所以我有三个单独的表:
Summary
size KUALA LUMPUR OTHERS PENANG SELANGOR DARUL EHSAN
1 tiny 0.000 0.000 0.000 0.000
2 small 435.344 245.598 333.317 272.342
3 medium 187.874 9656.649 0.000 0.000
4 big 0.000 116.861 138.366 0.000
RegionTotals
experience region1
1: 156.523 PENANG
2: 272.342 SELANGOR DARUL EHSAN
3: 343.998 KUALA LUMPUR
4: 296.601 OTHERS
SizeTotals
experience size
1: 0.000 tiny
2: 348.692 small
3: 136.207 big
4: 223.415 medium
overallTotal
experience
1: 276.613
考虑到区域和大小可能会发生变化,我如何才能实现以下结果?例如,有时我不会有区域“OTHERS”或大小“BIG”,具体取决于我获得的数据。我怎样才能做到这一点:
Summary
size KUALA LUMPUR OTHERS PENANG SELANGOR DARUL EHSAN TOTAL
1 tiny 0.000 0.000 0.000 0.000 0.000
2 small 435.344 245.598 333.317 272.342 348.692
3 medium 187.874 9656.649 0.000 0.000 223.415
4 big 0.000 116.861 138.366 0.000 136.207
5. TOTAL 343.998 296.601 156.523 272.342 276.613
您可以使用 rbind 向您的数据框添加一行,例如:
total <- c(size="TOTAL", apply(x[,-1], FUN=sum, MAR=2)
rbind(x, total)
同理,可以使用cbind添加一列。唯一棘手的部分是您必须从求和中省略非数字列:这就是我使用索引 -1 的原因,它删除了第一列。