我刚开始用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 ....
我希望你能帮我解决这个问题。提前谢谢你:)
答案 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))