R编码:如何仅使用4个完整的四分之一数据来保存记录,以及如何在多个条件下获取条件和

时间:2016-06-29 23:08:49

标签: r row conditional

我有一个包含公司季度数据的数据框,我有两个问题:





1:我如何只为那些拥有四分之三数据的公司保留记录(公司有时会出现1,2或3个季度的数据,但我需要在整个数据框架中为每个公司提供4个季度)





2:因为我有季度数据,所以我我想在两个条件中考虑年度平均值或总和(基于变量类型)给出两个条件:年份和公司。





例如,根据四个不同的季度值,1984年的公司i将分别具有平均库存价值和总收入,分别为I1984和REV1984。我目前正在使用这些代码行 - 对于均值和求和 - 但是R保持返回“NA”并且我搜索并搜索了替代方案,但似乎没有任何效果:

&#xA;&#xA; < pre> Company i_ I1984&lt; - with(R,mean(I [FY ==“1984”&amp; Co ==“AAR CORP”]))&#xA;公司i_REV1984&lt; - with(R ,sum(REVQ [FY ==“1984”&amp; Co ==“AAR CORP”]))&#xA; &#xA;&#xA;

R是我的数据框架& #xA;我&lt; - 季度库存&#xA; REVQ&lt; - 季度收入

&#xA;&#xA;

显然,当我找到每个新的平均值时,引号中的值将变为动态将值和位置放在新的 data.frame

&#xA;&#xA;

任何帮助都将受到高度赞赏。谢谢

&#xA;&#xA;

我在下面添加了一个示例代码:

&#xA;&#xA;
  company&lt; -c(“ xray“,”xray“,”xray“,”xray“,”foxrot“,”foxrot“,”delta“,”kilo“,”kilo“)&#xA; qtr&lt; -c(”1“,” 2“,”3“,”4“,”1“,”2“,”4“,”2“,”3“)&#xA;&#xA; IQ&lt;  -  rnorm(9,0,10) )&#xA; REVQ&lt;  -  rnorm(9,0,10)&#xA; AssetQ&lt;  -  rnorm(9,0,10)&#xA; CashQ&lt;  -  rnorm(9,0,10)& #xA;&#xA; #Modified dataframe&#xA; data&lt; -data.frame(company,qtr,IQ,REVQ,AssetQ,CashQ)&#xA;  
&#xA;& #xA;

在这个例子中,'xray'应该是我们采用均值/求和的唯一公司。

&#xA;

1 个答案:

答案 0 :(得分:0)

关于你的第一个问题(使用下面评论中的df结构):

company<-c("xray", "xray", "xray", "xray", "foxrot", "foxrot", "delta", "kilo", "kilo" )  
qtr <-c("1","2","3","4", "1", "2","4", "2","3")  
IQ <- rnorm(9,0,10)  
REVQ <- rnorm(9,0,10)  
AssetQ <- rnorm(9,0,10)  
CashQ <- rnorm(9,0,10)  
#Modified dataframe  
data<-data.frame(company,qtr, IQ, REVQ, AssetQ, CashQ )


#Using the dplyr package:  
data.complete<-data.frame(data %>% group_by(company) %>% filter(n() == 4))

关于你的第二个问题

#Get your sum and means (note that the 'by' command will separate the sums based on the company factor when you have more than 1 company with complete data)  
aggregate(data.complete[,3:6], by=list(data.complete$company), sum)
aggregate(data.complete[,3:6], by=list(data.complete$company), mean)