从面板数据到使用平均值的横截面数据

时间:2017-03-12 20:42:36

标签: r

我对R很新,所以我不确定我的问题是多么基本,但我仍然坚持以下几点。

我的数据具有面板结构,与此类似

Country   Year   Outcome   Country-characteristic

A         1990   10        40
A         1991   12        40
A         1992   14        40
B         1991   10        60
B         1992   12        60

出于某种原因,我需要把它放在一个横截面结构中,这样我得到了每个国家所有年份的平均值,最后看起来应该是这样,

Country Outcome Country-Characteristic

A       12      40
B       11      60

有人遇到过类似的问题吗?我正在玩lapply(表$ country,table $ outcome,mean)但是这并不是我想要的。

2 个答案:

答案 0 :(得分:0)

两个提示:1-当您提出问题时,您应该提供一个可重现的数据示例(就像我在下面read.table所做的那样)。 2-使用" - "不是一个好主意。在列名称中。你应该使用" _"代替。

您可以使用dplyr包获得摘要:

df1  <- read.table(text="Country   Year   Outcome   Countrycharacteristic
A         1990   10        40
A         1991   12        40
A         1992   14        40
B         1991   10        60
B         1992   12        60", header=TRUE, stringsAsFactors=FALSE)

library(dplyr)
df1 %>%
group_by(Country) %>%
summarize(Outcome=mean(Outcome),Countrycharacteristic=mean(Countrycharacteristic))

# A tibble: 2 x 3
  Country Outcome Countrycharacteristic
    <chr>   <dbl>                 <dbl>
1       A      12                    40
2       B      11                    60

答案 1 :(得分:0)

我们可以使用base R

aggregate中执行此操作
aggregate(.~Country, df1[-2], mean)
#   Country Outcome Countrycharacteristic
#1       A      12                    40
#2       B      11                    60