r - 使用 tidyverse 从一个分组数据集中动态变异另一个数据集中的一个变量
问题描述
假设我使用不同的类(节点,在我的数据集中)并且我有成千上万的学生。每个学生都有自己的数学成绩,我需要将所有个人成绩与小组均值/标准差进行比较。为了解决这个问题,我有两个不同的数据集。第一个是“一张桌子”。
这个数据框由几个类(节点)、它们的平均值和它们的 sd 组成。
我还有另一个由学生的结果组成的数据集,比如这个:
我想要另一个数据集,在其中我得到所有单独的结果(即 11、6、10 等),并从第一个数据集中的所有平均值中减去这个结果。将来,需要将所有结果和所有节点一起检查。
换句话说,从第一个名字(图像中的数字 12)中,我将从 68(平均结果)中减去 11(学生的结果),从 68(平均)中减去 6(学生的结果),从 68 中减去 10(学生的结果)(平均值)等。然后我将移动到第二个节点(图像中的数字 7),我也会这样做(从 74 中减去 11(平均结果),从 74 中减去 6(平均结果),从 74 中减去 10) ,
由于问题,为了让我的问题更清楚,以下命令也带来了一个有趣的解决方案,但它不起作用,因为我必须手动将所有列添加到新数据集中:
test_result %>%
mutate(total_header_node_12 = x - default_table$t_mean[1]) %>%
mutate(total_header_node_74 = x - default_table$t_mean[2])
我搜索了其他问题,但没有找到任何解决方案。任何帮助都是有价值的。我使用 tidyverse,我想留在 tidyverse 环境中。谢谢 转载:
> dput(default_table)
structure(list(node = structure(c(6L, 3L, 5L, 1L, 2L, 4L, 7L), .Label = c("4",
"5", "7", "8", "10", "12", "13"), class = "factor"), t_mean = c(68.8219178082192,
74.3260869565217, 83.0178571428571, 92.2108108108108, 98.3304347826087,
88.6111111111111, 48.4), t_sd = c(14.4351088961341, 16.9448394654941,
13.0272663858681, 12.2011483603603, 12.1775472144027, 14.5621088567959,
10.4876948807826), vars = c(1, 1, 1, 1, 1, 1, 1), n = c(121,
74, 92, 616, 191, 58, 7), mean = c(68, 74.6891891891892, 82.8369565217391,
91.3944805194805, 97.738219895288, 88.0172413793103, 48.7142857142857
), sd = c(14.0226008048911, 16.1151045250761, 11.0426517498479,
12.6758935948866, 12.0212336250146, 15.9169901273025, 8.63547500554709
), min = c(32, 32, 58, 36, 56, 44, 39), max = c(97, 113, 104,
123, 128, 124, 60), range = c(65, 81, 46, 87, 72, 80, 21), se = c(1.27478189135374,
1.87334284914993, 1.15127602962793, 0.510726307415094, 0.869825937534791,
2.09000319547951, 3.26390275965596), q0_25 = c(59, 64, 74.75,
84, 90, 80, 41.5), q0_5 = c(68, 73.5, 81.5, 92, 98, 87, 47),
q0_75 = c(80, 87.75, 92.25, 100, 106, 98.75, 56)), class = "data.frame", row.names = c(NA,
-7L))
test_result <- data.frame(x = rnorm(100,10,2))
解决方案
可能,您可以尝试:
library(dplyr)
default_table %>%
tidyr::crossing(test_result) %>%
mutate(comparative_mean = x - t_mean)
default_table
这会创建with的所有组合,test_result
然后我们将这两个值相减。
推荐阅读
- android - Gluon Mobile JavaFX 在运行时显示黑屏。使用 FXML 文件
- python - 拟合具有 BatchDataset 类型和 numpy 数组的混合输入的 keras 模型
- angular - Angular ngbTypeahead 过滤对象的所有成员
- python - 如何按输入的月份和年份过滤结果?
- windows-subsystem-for-linux - 如何在 ubuntu 16.04 LTS 或 18.04 LTS WSL 中安装 kubectl
- python-3.x - 使用数字对文件中的行进行排序
- imagemagick - phpThumb 无法识别 MAMP 环境中的 ImageMagick 安装
- html - 学习者 - 我的图像和文字之间的差距是什么
- javascript - 动态加载的外部本地脚本未运行
- c++ - 如何在单个程序中执行特定数量的孤立和僵尸进程?