我对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)但是这并不是我想要的。
答案 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