r - 数据表创建行
问题描述
我已经广泛研究了堆栈溢出,但找不到任何对我想要的输出有用的东西。
为了说明,请考虑以下示例数据框:
D X Y Z A B C Total
1 abc 2 3 4 7 2 1 19
总计对应于每一行的总和。为简单起见,设 B=19,即总数。我想要的输出是:
D X Y Z A B C Total
1 abc 1 2 3 4 5 2 B
2 N/A 1/B 2/B 3/B 4/B 5/B 2/B 1
在这里,第一行中的每个元素除以总数,这反映在第二行中。要为总计创建一列,我使用了 mutate 并执行了以下操作:
df <- df %>% mutate(Total = X + Y + Z + A + B + C)
但是我无法弄清楚如何创建一个每个元素都可以被总数整除的行。
任何帮助,将不胜感激!我不介意使用 mutate 或 data.table 来执行此操作,因为我使用 data.table 创建了一个大数据框。
EDIT1:我真的很抱歉没有提到这一点,但一列包含一些字符串。我已经编辑了上面的内容以反映这一点。
解决方案
这是dplyr
您的问题的答案。您实际想要做的可能更复杂,但这个简单bind_rows
的 , filter
, 和mutate_all
适用于提供的简单示例。
library(dplyr)
df <- data.frame(x = 2:3, y = 3:4, z = letters[1:2], total = c(0, 19))
bind_rows(
df,
filter(df, row_number() == n()) %>%
mutate_if(is.numeric, funs(. / total))
)
# x y z total
# 1 2.0000000 3.0000000 a 0
# 2 3.0000000 4.0000000 b 19
# 3 0.1578947 0.2105263 b 1
推荐阅读
- c# - 在 IdentityServer4IdentityCore 快速入门中更新数据库
- datasource - 动态连接 Pentaho 中的 DEV 和 TEST 环境
- excel - 使用 PowerShell 提取 excel 单元格的值,其中包含
- c# - 违反面向对象的概念?
- php - 在服务器上连接堆栈:Vue js 前端 + php api + postgres db
- php - 更新 Model Laravel 7 时如何获取原始数据?
- php - 显示缺货产品 - 定位自定义帖子类型
- jvm - 运行 Java 杂志文章中的 Concurnas GPU 内核
- javascript - 在 JavaScript 中从返回 JSON 的函数中使用 await
- python - 如何在不使用列名的情况下操作数据框的值