如何在R中为以下情况创建循环

时间:2016-04-11 21:11:06

标签: r statistics

我刚开始用R进行统计分析,我还在学习。我在R中创建循环有一个问题。我有以下情况,我想知道是否有人可以帮助我。对我来说似乎是不可能的,但对你们中的一些人来说,这只是一块蛋糕。我有不同年份的不同公司的数据集。对于每家公司,我都有季度收益数据,我需要计算每家公司每年的收入中位数: 我拥有的数据集如下:

Date      Firm    Earnings
1Q 2009   A       1000    
2Q 2009   A       1500   
3Q 2009   A       500
4Q 2009   A       2000
1Q 2010   A       1200
2Q 2010   A       1800
3Q 2010   A       2100
4Q 2010   A       2500
1Q 2009   B       1750 
2Q 2009   B       2400
3Q 2009   B       3000
4Q 2009   B       2050
.
.

我需要的结果如下

Year     Firm      Median 
2009      A         1250
2010      A         1950
2009      B         2225
2010      B         ....

我希望你能帮我解决这个问题。提前谢谢你:)

2 个答案:

答案 0 :(得分:0)

你的意思是"意思是"而不是中位数?如果是这种情况,您可以使用名为aggregate()的漂亮函数。假设您的第二列被称为"年,"你可以试试这个:

newdata <- aggregate(mydata$Earnings, list(Year=mydata$Year, Firm=mydata$Firm), mean)

答案 1 :(得分:0)

您可以使用有用的plyr包:

install.packages("plyr")

### Assuming your data is stored in a data frame called "x" ###

### Strip the quarters from the Date variable ###
x$Date <- gsub("1Q", "", x$Date)
x$Date <- gsub("2Q", "", x$Date)
x$Date <- gsub("3Q", "", x$Date)
x$Date <- gsub("4Q", "", x$Date)

### Collapse by Date and by Firm ###
y <- ddply(x, c("Date", "Firm"), summarise,
       Median = median(Earnings, na.rm = T))