2017-03-17 165 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"))