2014-10-17 53 views
0

我正在处理18列的数据框,工作列是CPM和SpendRange。支出范围分为1级:3000级,每步50级。通过唯一值和平均值组数据框

我试图平均每个支出范围内的每千次展示费用(CPM),并导致数据框中包含唯一支出范围和意味着每个CPM。

我想:

CPMbySpend<-aggregate(Ads$CPM,by=list(Ads$SpendRange),function(x) paste0(sort(unique(x)),collapse=mean(Ads$CPM)) 
    CPMbySpend<-data.frame(CPMbySpend) 

显然发现了,我不能用崩溃的功能...有什么建议?

最佳的输出将是:

1-50 | mean(allvalues with spendrange 1-50) 
    51-100 | mean(allvalues with spendrange 51-100) 
+0

你能显示一个小重复的例子,和预期的结果? – akrun 2014-10-17 12:27:55

+0

当然,如果上面的崩溃被替换为collapse =“,”那么输出将显示为: Group.1 | X 1-50 | 0.01,0.02,0.03,0.04 ...... 51-100 | 0.05,0.06,0.07,0.08 ...... 预期结果如下: Group.1 | X 1-50 |意思是(0.01,0.02,0.03 ...) 51-100 |意思是(0.05,0.06,0.07 ...) 这有帮助吗? – GregdeLima 2014-10-17 12:33:55

+0

是的,我看到试图更新以更清晰地显示。目标是两列:A列是Ads $ SpendRange的唯一值,B列是Ads $ CPM中所有值的平均值。如果列A = 1-50,请考虑:平均列B,然后将该值放入数据框中。 – GregdeLima 2014-10-17 12:39:59

回答

1

使用新的数据集

Ads <- read.csv("Test.csv", header=TRUE, stringsAsFactors=FALSE) 
    Ads$CPM <- as.numeric(Ads$CPM) #the elements that are not numeric ie. `-$` etc. will be coerced to NAs 
    #Warning message: 
    #NAs introduced by coercion 

    res <- aggregate(Ads$CPM,by=list(SpendRange=Ads$SpendRange),FUN=mean, na.rm=TRUE) 

如果您要订购的SpendRange0-11-50等,一个方法是使用mixedordergtools

library(gtools) 
    res1 <- res[mixedorder(res$SpendRange),] 
    row.names(res1) <- NULL 
    head(res1) 
    # SpendRange  x 
    #1  0-1 1.621987 
    #2  1-50 2.519853 
    #3 51-100 3.924538 
    #4 101-150 5.010795 
    #5 151-200 3.840549 
    #6 201-250 4.286923 

否则,你可以通过调用factor .i.e指定的SpendRangelevels更改顺序。

res1$SpendRange <- factor(res1$SpendRange, levels= c('0-1', '1-50',.....)) #pseudocode 

然后用

res1[order(res1$SpendRange),] 
+0

我认为这很接近,我只是得到了错误: do.call中的错误(广告,聚合(Ads $ CPM,by = list(SpendRange = Ads $ SpendRange),: '什么'必须是一个字符字符串或函数 此外:有21个警告(使用警告()看到它们) – GregdeLima 2014-10-17 12:47:13

+0

@GregdeLima我用新的替换了那个步骤'do.call'。你仍然收到警告()。正如我前面提到的,更好的办法是发布一个可重复的例子和你的预期结果,以便减少混淆 – akrun 2014-10-17 12:47:57

+0

是的,我仍然得到错误这里是一个链接到CSV我正在阅读一个数据框:http://bit.ly/1pjVwyw – GregdeLima 2014-10-17 12:56:24