2017-03-17 542 views
-1

我使用下面的函数来执行聚合操作,该操作通过某些标签来计算共享。更改聚合输出的列名称

computeShare <- function(df, colX, colY) { 
    aggregate(as.formula(paste0(colY, '~', colX)), 
      df, function(x){length(x)/nrow(df)}) 
} 

df_out <- computeShare(some_df, "colx", "coly") 

df_out使输出df_out像下面

  colx   coly 
1   name1 1.897315e-02 
2   name2 2.988709e-04 
3   name3 7.081621e-04 

而是列名coly以上,我想的名字Share。我可以在下面的函数中通过colnames(df_out)[2] <- "Share"来完成。

computeShare <- function(df, colX, colY) { 
     df_out <- aggregate(as.formula(paste0(colY, '~', colX)), 
       df, function(x){length(x)/nrow(df)}) 
     colnames(df_out)[2] <- "Share" 
     df_out 

    } 

这是正确的方法吗?

+0

您不必为“聚合”使用公式方法。你可以使用'list'方法,它可以让你添加名字。 – A5C1D2H2I1M1N2O1R2T1

+0

@ A5C1D2H2I1M1N2O1R2T1 - 你能详细介绍一下列表方法吗? – user3206440

+0

正如'(df,aggregate(list(share = coly),list(colx = colx),function(x){length(x)/ nrow(df)}))'或类似的东西...... – A5C1D2H2I1M1N2O1R2T1

回答

0

你试过setNames(aggregate(...), c("group","Share"))