dcast和汇总到函数中 - 参数丢失

问题描述:

我试图将以下代码正常工作转换为函数。dcast和汇总到函数中 - 参数丢失

result_check <- data %>% 
    group_by(column, target) %>% 
    summarise(Unique_Elements = n()) %>% 
    dcast(column_code ~ target, value.var="Unique_Elements") 

例如,如果我们采取以下数据集:

column1 target 
    AA  YES 
    BB  NO 
    BC  NO 
    AA  YES 

的代码会做总数据集按目标变量,就像这样:

column1 YES NO 
    AA  2 0 
    BB  0 1 
    BC  0 1 

这是我如何构建功能:

aggregate_per_group <- function(column) { 
data %>% 
    group_by(column, target) %>% 
    summarise(Unique_Elements = n()) %>% 
    dcast(column ~ target, value.var="Unique_Elements")} 

但我得到 - 错误:未知变量按分组:列。我知道它的一个基本问题,但是为什么我放弃了group_by中的论点的任何线索?

我曾尝试使用以下imlementation“group_by_”以及“require(”dplyr“)”,但它们似乎无关。

+2

可能的重复[简单的方法来转换长宽格式与计数在R](http://stackoverflow.com/questions/34417973/easy-way-to-convert-long-to-wide-format -with-counts-in-r) –

+1

感谢您的反馈。其实,正如我所解释的......我在功能的构建方面存在问题。不是重塑本身。所以我不认为它是你指出的问题的重复。 – Prometheus

我们可以使用tablebase R

table(data) 

如果我们有兴趣在一个函数,然后使用与spread沿group_by_tidyr

aggregate_per_group <- function(column) { 
    data %>% 
     group_by_(column, "target") %>% 
     summarise(Unique_Elements = n()) %>% 
     spread(target, Unique_Elements, fill = 0) 
} 

library(dplyr) 
library(tidyr) 
aggregate_per_group("column1") 
# column1 NO YES 
# * <chr> <dbl> <dbl> 
#1  AA  0  2 
#2  BB  1  0 
#3  BC  1  0 

如果我们需要的dcastreshape2

library(reshape2) 
aggregate_per_group <- function(column) { 
    data %>% 
     group_by_(column, "target") %>% 
     summarise(Unique_Elements = n()) %>% 
     dcast(data = ., paste(column, '~ target'), 
       value.var="Unique_Elements", fill = 0) 
} 

aggregate_per_group("column1") 
# column1 NO YES 
#1  AA 0 2 
#2  BB 1 0 
#3  BC 1 0 
+1

谢谢你的帮助。你有什么想法如何实现没有tidyr功能?我无法在R studio服务器上使用该库。 – Prometheus

+0

@Prometheus更新了'dcast'的帖子。 – akrun

+1

工程很棒。感谢您的时间和精力! – Prometheus