我想基于其余列的唯一性来聚合freq列。 我通常使用
$scope.openAttachment = function (attachment) {
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(
b64toBlob(attachment.attachment, attachment.mimeType),
attachment.filename
);
}
};
但在这种情况下,变量将是未知的,因为用户将使用闪亮的
下拉选择变量 aggregate(freq~var1+var2+var3, df, sum)
所以在我的情况下,用户会选择前四列中的任何一列,例如,某人可能只选择疾病,然后我需要按疾病汇总频率,有人可能会选择疾病和性别等等
答案 0 :(得分:1)
用户提供要聚合为矢量的列名:
user.cols <- c("DISEASE",'Age')
您可以通过这些列在数据框中创建唯一的向量
df$unq <- apply( df[ , user.cols ] , 1 , paste , collapse = "-" )
继续并按唯一列汇总:
output <- aggregate(freq~unq, df, sum)
答案 1 :(得分:1)
考虑使用paste(..., collapse=...)
构建的动态公式:
dynamic_agg <- function(vars) {
f <- as.formula(paste0("Freq~", paste(vars, collapse="+")))
aggregate(f, df, FUN=sum)
}
dynamic_agg(c("Date"))
# Date Freq
# 1 1/2/2014 15
# 2 1/3/2014 108
# 3 1/6/2014 10
# 4 1/8/2014 32
dynamic_agg(c("Gender", "Date"))
# Gender Date Freq
# 1 M 1/2/2014 15
# 2 F 1/3/2014 52
# 3 M 1/3/2014 56
# 4 F 1/6/2014 10
# 5 F 1/8/2014 32
dynamic_agg(c("DISEASE", "Gender", "Date"))
# DISEASE Gender Date Freq
# 1 Campy M 1/2/2014 15
# 2 Chlamydia F 1/3/2014 52
# 3 Campy M 1/3/2014 56
# 4 Campy F 1/6/2014 10
# 5 Chlamydia F 1/8/2014 32