![](/img/trans.png)
[英]R function to summarize multiple columns of data with multiple functions, grouped by a column
[英]R, pass grouped column as string to summarize function argument
在下面的代碼中,
# data frame df has columns A, B, C, D, E and few more
tmp = group_by( df, A, B, C, D)
tmp = summarise( tmp, NewColumn = min( E))
我想將第二行中的E
列更改為字符串或任何允許在 function 中包含這兩行代碼的格式,即(一種可能的格式)
getSummary = function( tmp = NULL, col2pass = 'E') {
tmp = group_by( df, A, B, C, D)
tmp = summarise( tmp, NewColumn = min( col2pass))
return( tmp)
}
我試過tmp[, colnames( tmp)[[ index_of_E]]]
, tmp[ 'E']
或只是"E"
但它顯然不起作用; 在前兩種情況下,分組丟失,在第二種情況下,字符串被解釋為文字字符串。
謝謝
您面臨使用dplyr
進行標准評估的棘手問題。 如果您開始使用變量名編寫函數,您可能會發現data.table
更易於處理(您在 我的帖子中有示例)
使用dplyr
您可以使用rlang
變量:
tmp = summarise( tmp, NewColumn = min(!!rlang::sym(col2pass)))
您還可以使用{{}}
語法取消引用( 最近的功能):
tmp = summarise(tmp, NewColumn = min({{col2pass}}))
你可以寫:
library(data.table)
setDT(tmp)
tmp[, .('NewColumn' = get(col2pass))]
我們可以使用summarise_at
library(dplyr)
tmp %>%
summarise_at(vars(col2pass), min)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.