2017-03-12 6 views
-2

Ich bin sehr neu zu R, so bin ich mir nicht sicher, wie grundlegend meine Frage ist, aber ich bin bei dem folgenden Punkt fest.Von Panel-Daten zu Querschnittsdaten mit Durchschnitten

Ich habe Daten, die eine Plattenstruktur, ähnlich wie diese

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 

Aus irgendeinem Grund habe ich brauche diese in einer Querschnittsstruktur setzen solche I Durchschnitt über alle Jahre erhalten für jedes Land, das heißt am Ende sollte es aussehen,

Country Outcome Country-Characteristic 

A  12  40 
B  11  60 

Hat jemand ein ähnliches Problem konfrontiert? Ich spielte mit lapply (Tabelle $ country, Tabelle $ outcome, mean), aber das funktionierte nicht so, wie ich es wollte.

Antwort

0

Zwei Tipps: 1- Wenn Sie eine Frage stellen, sollten Sie auch ein reproduzierbares Beispiel für die Daten angeben (wie ich es zuvor mit getan habe). 2- Es ist keine gute Idee, "-" in Spaltennamen zu verwenden. Sie sollten stattdessen "_" verwenden.

Sie können eine Zusammenfassung erhalten mit dem dplyr Paket:

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 
0

Wir können dies mit in base R tun aggregate

aggregate(.~Country, df1[-2], mean) 
# Country Outcome Countrycharacteristic 
#1  A  12     40 
#2  B  11     60 
Verwandte Themen