data <- data.frame(section=rep(c("A","B"),3), quantity=c(6:11))
#I need to get this result :
RESULT = data %>% group_by(section) %>% summarise(total=sum(quantity))
# function :
synthetize = function(x,column,measure){
result = x %>% group_by(column) %>% summarise(total=sum(measure))
}
RESULT2=synthetize(data,column="section",measure="quantity")
RESULT2
我尝试了eval
、get
,但看起来这没有帮助
我们可以使用rlang::sym
将字符串转换为符号并求值(!!
)
library(tidyverse)
synthetize = function(x, column, measure){
x %>%
group_by_at(column) %>%
summarise(total=sum(!! rlang::sym(measure)))
}
synthetize(data, column="section", measure="quantity")
# A tibble: 2 x 2
# section total
# <fct> <int>
#1 A 24
#2 B 27
注意:这里我们使用了OP相同的参数类型
如果我们使用的是dplyr
的旧版本,下面的内容可能会有所帮助
library(lazyeval)
synthetize2 = function(x, column, measure){
x %>%
group_by_(column) %>%
summarise(total = interp(~ sum(v1), v1 = as.name(measure)))
synthetize2(data, column='section', measure='quantity')
本文向大家介绍如何通过R中data.table中的列名删除列?,包括了如何通过R中data.table中的列名删除列?的使用技巧和注意事项,需要的朋友参考一下 我们可以通过将列设置为NULL来实现 示例 删除一列x 删除两列
我有一个数据帧(df1),其中包含200多列数据(每列数千行)。列名是字母数字的,并且彼此不同。 我有第二个数据集(df2),其中包含几列,其中第一列(名为“col1”)包含带有“值”的行,这些行带有df1的列名。 但不是对于df2中的每一行,我在df1中具有对应的列。 现在,我想删除(删除)df2中没有“对应”列的所有行。 我用“子集data.frame另一个data.frame的值”这样的关键
当我使用documentId作为字段路径从Firebase Firestore查询数据时,在Web页面(javascript)和Firebase函数(node.js)中运行脚本时,我会得到不同的行为。 给我一个错误: 错误:{错误:__name__上的筛选器必须是clientreadablestream._emitstatusIfdone(/user_code/node_modules/fireb
问题内容: 我想通过ORM进行一个非常简单的查询,但无法弄清楚。 我有三种模式: 位置(位置),属性(位置可能具有的属性)和评分(也包含得分字段的M2M“直通”模型) 我想选择一些重要的属性,并能够通过这些属性对我的位置进行排名-即,所有选定属性的总分更高=更好。 我可以使用以下SQL来获取所需的内容: 哪个返回 | 我可以通过ORM得到的最接近的是: 哪个返回 即所有的总和,而不是按位置分组。
问题内容: 在javascript中,存在创建匿名函数并立即调用它的常见模式(通常称为自执行匿名函数或立即调用的函数表达式)。 使用Java 8 lambda,是否有标准方法可以复制此行为?有点像。 这个问题基本上提出了相同的问题,但是对于Java7。我正在明确地寻找使用lambda的构造。 问题答案: 也不是没有声明类型。由于Java是静态类型的语言,并且函数不是一等公民,因此编译器需要知道la
在javascript中,常见的模式是创建匿名函数并立即调用它(通常称为自动执行匿名函数或立即调用的函数表达式)。 对于Java8 lambdas,是否有复制这种行为的标准方法?类似于