【问题标题】:Create group and time specific means in R在 R 中创建特定于组和时间的方法
【发布时间】:2020-04-20 12:28:50
【问题描述】:

我有一个长格式的面板数据集。我正在尝试使用特定于时期和组的方式创建一个对象,以创建特定的情节。

数据集如下所示:

id <- c(1, 1, 2, 2, 3, 3)
yes.perc <- c(66.7, 60.1, 50, 38.2, 55.3, 49)
ref.code <- c(6040,6041,6040,6041,6040,6041)
treat <- c(1,0,1,0,1,0)
year <- c(2010, 2012, 2010, 2012, 2010, 2012)
df <- as.data.frame(c(id, yes.perc, ref.code, treat, year)

我尝试过的其中一件事是:

means.t <- c(mean(df$yes.perc [df$year==2010&df$treat==1]),
mean(df$yes.perc [df$year==2012&df$treat==1]))
means.c <- c(mean(df$yes.perc [df$year==2010&df$treat==0]),
mean(df$yes.perc [df$year==2012&df$treat==0]))

我也试过这个:

df %>% group_by(year, treat)%>% summarise(year.mean=mean(yes.perc))

我得到的只是 NA,我不明白为什么

非常感谢您的帮助!

【问题讨论】:

  • df %>% group_by(year)%>% summarise(mean=mean(yes.perc))
  • 创建数据框时:df &lt;- data.frame(id, yes.perc, ref.code, treat, year)
  • 它也不起作用:它只提供 1 行 NA,即使它确实起作用,我也在尝试为“treat”的 2 个值创建特定年份的方法,所以它不会不行,但是谢谢!
  • 你可以做group_by(treat, year)
  • 我做了,我得到的方法与我在问题中展示的方法相同:所有 NAs

标签: r panel data-manipulation dplyr


【解决方案1】:
library(dplyr)

id <- c(1, 1, 2, 2, 3, 3)
yes.perc <- c(66.7, 60.1, 50, 38.2, 55.3, 49)
ref.code <- c(6040,6041,6040,6041,6040,6041)
treat <- c(1,0,1,0,1,0)
year <- c(2010, 2012, 2010, 2012, 2010, 2012)
df <- data.frame(id, yes.perc, ref.code, treat, year)
df %>% group_by(year, treat)%>% summarise(year.mean=mean(yes.perc))
#> # A tibble: 2 x 3
#> # Groups:   year [2]
#>    year treat year.mean
#>   <dbl> <dbl>     <dbl>
#> 1  2010     1      57.3
#> 2  2012     0      49.1

reprex package (v0.3.0) 于 2020 年 4 月 20 日创建

这能解决你的问题吗?

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 1970-01-01
    • 2020-06-26
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多