【问题标题】:creating an array of grouped values (means)创建一组分组值(均值)
【发布时间】:2019-06-16 10:45:13
【问题描述】:

我有一个大型数据集(“bsa”,取自 23 年期间),其中包括一个用于“左右”观点(政治方向)的变量(“leftrigh”)。我想总结一下队列如何随时间变化。例如,在 1994 年,这个量表对 45 岁的人的平均值是(比如说)2.6;在 1995 年,46 岁的人的这个量表的平均值是(比如说)2.7 - 等等。我创建了一个出生年份变量(“yrbrn”)来促进这一点。

我已经成功创建了手段:

bsa <- bsa %>% group_by(yrbrn, syear) %>% mutate(meanlr = mean(leftrigh))

我正在努力按年份(调查)和年龄(调查时)总结手段。如果我可以创建一个按年龄 x 调查年份组织的数组(包含这些方法),我可以通过检查对角线来查看随时间的变化。但我不知道该怎么做——我的技能非常有限......

A tibble: 66,744 x 10
Groups:   yrbrn [104]
     Rsex     Rage  leftrigh OldWt syear     yrbrn   coh   per agecat  meanlr
1 1 [Male]      40  1 [left] 1.12   2017      1977    17  2017 [37,47)   2.61
2 2 [Female]    79  1.8      0.562  2017      1938     9  2017 [77,87)   2.50
3 2 [Female]    50  1.5      1.69   2017      1967    15  2017 [47,57)   2.59
4 1 [Male]      73  2        0.562  2017      1944    10  2017 [67,77)   2.57
5 2 [Female]    31  3        0.562  2017      1986    19  2017 [27,37)   2.56
6 1 [Male]      74  2.2      0.562  2017      1943    10  2017 [67,77)   2.50
7 2 [Female]    58  2        0.562  2017      1959    13  2017 [57,67)   2.56
8 1 [Male]      59  1.2      0.562  2017      1958    13  2017 [57,67)   2.53
9 2 [Female]    19  4        1.69   2017      1998    21  2017 [17,27)   2.46

呈现此信息以查看随时间变化的可能格式:

        1994  1995  1996  1997  1998  1999  2000  
18  
19  
20  
21  
22  
23  
24  
25  
etc.  

【问题讨论】:

  • 你能添加一些输入数据和想要的输出吗?
  • 欢迎来到 StackOverflow!阅读如何创建reproducible example。您可以使用dput 向我们提供您的数据样本。
  • 是的——我已将上面的代码更改为 group_by yrbrn 和 syear。
  • RE 可能重复,似乎主要问题是用户正试图将数据塑造成一个矩阵 - 而不是 group_by 的问题 >1 变量..
  • @rg255 OP 说矩阵是“可能的格式”,然后在上面的评论中说他们对其他选项持开放态度。

标签: r


【解决方案1】:

您可以同时group_by 年龄和年份:

# Setup (& make reproducible data...)
n <- 10000
df1 <- data.frame(
  'yrbrn' = sample(1920:1995, size = n, replace = T),
  'Syear' = sample(2005:2015, size = n, replace = T),
  'leftrigh' = sample(seq(0,5,0.1), size = n, replace = T))

# Solution
df1 %>% 
  group_by(yrbrn, Syear) %>% 
  summarise(meanLR = mean(leftrigh)) %>% 
  spread(Syear, meanLR)

产生以下内容:

# A tibble: 76 x 12
# Groups:   yrbrn [76]
   yrbrn `2005` `2006` `2007` `2008` `2009` `2010` `2011` `2012` `2013` `2014` `2015`
   <int>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
 1  1920   3.41   1.68   2.26   2.66   3.21   2.59   2.24   2.39   2.41   2.55   3.28
 2  1921   2.43   2.71   2.74   2.32   2.24   1.89   2.85   3.27   2.53   1.82   2.65
 3  1922   2.28   3.02   1.39   2.33   3.25   2.09   2.35   1.83   2.09   2.57   1.95
 4  1923   3.53   3.72   2.87   2.05   2.94   1.99   2.8    2.88   2.62   3.14   2.28
 5  1924   1.77   2.17   2.71   2.18   2.71   2.34   2.29   1.94   2.7    2.1    1.87
 6  1925   1.83   3.01   2.48   2.54   2.74   2.11   2.35   2.65   2.57   1.82   2.39
 7  1926   2.43   3.2    2.53   2.64   2.12   2.71   1.49   2.28   2.4    2.73   2.18
 8  1927   1.33   2.83   2.26   2.82   2.34   2.09   2.3    2.66   3.09   2.2    2.27
 9  1928   2.34   2.02   2.1    2.88   2.14   2.44   2.58   1.67   2.57   3.11   2.93
10  1929   2.31   2.29   2.93   2.08   2.11   2.47   2.39   1.76   3.09   3      2.9

【讨论】:

  • 谢谢——是的,我想这就是我所做的。但是这一步创造了很多手段。问题是,如何以一种让我能够看到不同同类群组随时间变化的方式呈现它们。
  • 这现在会生成一个矩阵@dbartram,其中包含队列/yrbrn 行,因此您可以看到这些随调查年份的变化
  • 啊,这看起来像我所追求的——比我想象的要好,因为现在我可以看到行内的变化(而不是查看对角线)。非常感谢!下次我会尝试在提出/格式化我的问题时做得更好
猜你喜欢
  • 2022-01-24
  • 2012-06-04
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多