如何在R中动态地根据列名过滤数据?

时间:2017-05-31 05:26:53

标签: r

我在R中执行例程,我需要按组对变量求和。我看到了此post并使用了aggregate。当hardcode列名称CategoryFrequency时,它可以正常工作。

Category     Frequency
First        10
First        15
First        5
Second       2
Third        14
Third        20
Second       3

但是,我的情况是,必须在运行时为这些列名分配dynamically。这些列是在运行时基于某些操作创建的。所以,如果我尝试使用像这样的变量访问列名 -

x_axis_column <- input$x_axis

并尝试使用聚合函数,我得到一个错误,如下所示 -

Error in FUN: invalid 'type' (character) of argument

这是我试过的代码 -

counted <- aggregate(item~x_axis_column, data, sum)

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

由于列名存储在变量中,我们无法直接使用它们。一种方法是使用变量对数据帧进行子集化。

aggregate(df[item], df[x_axis_column], sum)

#  Category Frequency
#1    First        30
#2   Second         5
#3    Third        34

或另一种选择是使用公式和get

aggregate(get(item)~get(x_axis_column), df, sum)

答案 1 :(得分:0)

我们可以使用>1

tidyverse