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

如何在R中为以下情况创建循环,r,statistics,R,Statistics,我刚开始使用R进行统计分析,我还在学习。我在R中创建循环时遇到了一个问题。我遇到了以下情况,我想知道是否有人能帮我解决这个问题。对我来说这似乎是不可能的,但对你们中的一些人来说这只是小菜一碟。我有不同年份不同公司的数据集。对于每家公司,我有一份季度收益数据,我需要计算每家公司每年的收益中位数: 我拥有的数据集如下所示: Date Firm Earnings 1Q 2009 A 1000 2Q 2009 A 1500 3Q 2009

我刚开始使用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         ....
我希望你能在这个问题上帮助我。提前谢谢:)

你是说“平均”而不是中位数吗?如果是这样,您可以使用一个名为aggregate()的漂亮函数。假设您的第二列名为“年”,您可以尝试以下方法:

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

newdata您可以使用有用的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))
install.packages(“plyr”)
###假设您的数据存储在名为“x”的数据框中###
###从日期变量中去掉季度###

x$Date是这些随机行中的数据,还是您的帖子存在格式问题?@Gopala-这是post@Henry-谢谢你,亨利,我还是stackoverflow.com的新手。我一直在努力重新格式化我的帖子:)@hbtf.1046编辑框上方的{}图标对代码和表很有用。我不建议在这里使用循环-您可能还没有提出正确问题的语言,但您正在寻找“按r中的组计算”-这将导致您出现以下问题:。我将标记为复制,但希望这有帮助!我在尝试安装软件包时收到此消息:软件包“dplyr”不可用(对于R版本3.1.1),我建议更新R!您可以从“帮助-->检查更新”中执行此操作dplyr是一个非常有用的软件包,值得仔细查看。特别是作为一个新用户,它可以为您节省大量处理数据集的时间。你给我的密码很好用。谢谢你的帮助。如果可能的话,我只有一个问题。如果我有每日日期而不是季度日期,例如2009年1月2日、2009年2月2日、2009年3月2日。。。。。如何从日期变量中去掉日期和月份并保留年份???是的,你是对的——我的意思是写“plyr”而不是“dplyr”。这是一个有助于设置日期格式的链接:谢谢Gerry的帮助,但是当我应用代码时,没有任何变化。我得到了相同的数据集你有正确的列名吗?它对我有用。。。我想你们把这些栏目的名称搞混了。我只有3列。日期列包含季度和年份。在我应用你的代码之前,我需要将季度分开。顺便说一句,如果我有4列,你的代码运行良好。再次感谢你的帮助,我很感激。