使用数据集中的现有变量创建变量

amisos55

我正在处理为每个教室的男女学生之间的平均分数差异创建一个变量。Class id 代表每个教室。性别是针对每个学生的,最后一列是他们的分数。

我希望每个教室都有一个平均差值(女性(1)-男性(0));

我的数据如下所示:

data <- matrix(c(1,1,1,1,2,2,2,2,3,3,3,3,
                 0,1,1,0,1,0,0,1,0,1,1,0,
                 20,25,22,21,30,35,32,31,40,45,42,44), 
                 nrow=12, 
                 ncol=3) 
colnames(data) <- c("class id","gender","score")

> data
         class id    gender score
 [1,]        1         0    20
 [2,]        1         1    25
 [3,]        1         1    22
 [4,]        1         0    21
 [5,]        2         1    30
 [6,]        2         0    35
 [7,]        2         0    32
 [8,]        2         1    31
 [9,]        3         0    40
 [10,]        3        1    45
 [11,]        3        1    42
 [12,]        3        0    44

我需要它是这样的:

> data
            class id  mean score
 [1,]        1             3
 [2,]        2            -3
 [3,]        3            1.5

有什么想法吗?

谢谢!

弗里克先生

这是一个使用 tidyverse 函数的解决方案

library(tidyverse)
data %>% as_tibble %>% 
  group_by(`class id`, gender) %>% 
  summarize(mean=mean(score)) %>% 
  spread(gender, mean) %>% 
  mutate(mean_score=`1`-`0`) %>% 
  select(`class id`, mean_score)

使用 tibble 或 data.frame 比使用矩阵容易得多,因此您可以从转换输入数据开始。然后我们计算每个性别的平均值。然后我们将其展开以在每个班级的同一记录中为每个性别设置一个值。然后我们只取不同之处。请注意反引号,因为此示例中的列名称为奇数。

或者你可以做这样的事情

data %>% as_tibble %>%
  group_by(`class id`) %>% 
  summarize(mean_score=mean(score[gender==1]) - mean(score[gender==0]))

这避免了重塑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用条件从数据框中的现有变量创建一个新变量

来自分类Dev

使用现有变量组创建新的SAS变量组

来自分类Dev

使用Shiny Inputs在数据集中创建新变量

来自分类Dev

使用Shiny Inputs在数据集中创建新变量

来自分类Dev

从现有变量创建相关变量

来自分类Dev

从现有变量创建相关变量

来自分类Dev

如何使用C中的现有变量创建位域

来自分类Dev

根据现有变量在数据框中创建新变量

来自分类Dev

如何使用自定义函数在现有数据框中创建新的二进制变量?

来自分类Dev

在python中从现有变量高效创建新变量

来自分类Dev

根据现有变量的频率创建新变量

来自分类Dev

从R中的现有日期变量创建适当的日期变量

来自分类Dev

根据条件从现有变量创建新变量

来自分类Dev

根据其他数据集中的其他值创建变量

来自分类Dev

额外变量或现有变量

来自分类Dev

如果现有变量位于数据框中的两个值之间,则创建等于1的新变量

来自分类Dev

如何使用另一个数据库中的变量在现有数据库中创建新的二进制列?

来自分类Dev

重塑数据集中的多个变量

来自分类Dev

列出数据框子集中的所有变量(及其比例)

来自分类Dev

从SPSS中的数据集中删除所有变量

来自分类Dev

在现有数据集或数据框架上自动有条件地创建新变量

来自分类Dev

使用sum(x:y)从R中的现有值创建一个新变量/向量

来自分类Dev

使用dplyr独立地获取数据集中的子集变量

来自分类Dev

如何对 R 数据集中的不同变量使用相同的代码?

来自分类Dev

R-使用带有for循环的其他变量在数据框中创建变量

来自分类Dev

使用所有当前变量的滞后数据创建新变量

来自分类Dev

如何从现有变量创建随机多维数组

来自分类Dev

根据两个变量的确切时间差在分组数据集中有条件地创建变量

来自分类Dev

有效创建可观察变量,以从可观察变量集中过滤特定项目

Related 相关文章

  1. 1

    使用条件从数据框中的现有变量创建一个新变量

  2. 2

    使用现有变量组创建新的SAS变量组

  3. 3

    使用Shiny Inputs在数据集中创建新变量

  4. 4

    使用Shiny Inputs在数据集中创建新变量

  5. 5

    从现有变量创建相关变量

  6. 6

    从现有变量创建相关变量

  7. 7

    如何使用C中的现有变量创建位域

  8. 8

    根据现有变量在数据框中创建新变量

  9. 9

    如何使用自定义函数在现有数据框中创建新的二进制变量?

  10. 10

    在python中从现有变量高效创建新变量

  11. 11

    根据现有变量的频率创建新变量

  12. 12

    从R中的现有日期变量创建适当的日期变量

  13. 13

    根据条件从现有变量创建新变量

  14. 14

    根据其他数据集中的其他值创建变量

  15. 15

    额外变量或现有变量

  16. 16

    如果现有变量位于数据框中的两个值之间,则创建等于1的新变量

  17. 17

    如何使用另一个数据库中的变量在现有数据库中创建新的二进制列?

  18. 18

    重塑数据集中的多个变量

  19. 19

    列出数据框子集中的所有变量(及其比例)

  20. 20

    从SPSS中的数据集中删除所有变量

  21. 21

    在现有数据集或数据框架上自动有条件地创建新变量

  22. 22

    使用sum(x:y)从R中的现有值创建一个新变量/向量

  23. 23

    使用dplyr独立地获取数据集中的子集变量

  24. 24

    如何对 R 数据集中的不同变量使用相同的代码?

  25. 25

    R-使用带有for循环的其他变量在数据框中创建变量

  26. 26

    使用所有当前变量的滞后数据创建新变量

  27. 27

    如何从现有变量创建随机多维数组

  28. 28

    根据两个变量的确切时间差在分组数据集中有条件地创建变量

  29. 29

    有效创建可观察变量,以从可观察变量集中过滤特定项目

热门标签

归档