R聚合数据帧并粘贴到许多列上

时间:2014-07-05 21:03:56

标签: r group-by

我有一个非常宽的数据框:> 80列。 我想聚合左侧的一些列,将paste0应用于其他列:

prov_solicitud        expediente Puntos AR16_09 BA16_09 BA11_08 BA17_09 BA22_08
          Vigo   BS607A 2014/1-5     65    <NA>    <NA>    <NA>    <NA>    <NA>
      A Coruña  BS607A 2014/10-1     42    <NA>       1    <NA>    <NA>    <NA>
          Lugo  BS607A 2014/10-2     10    <NA>    <NA>       -    <NA>       O
          Lugo  BS607A 2014/10-2     10    <NA>       2    <NA>    <NA>    <NA>
          Vigo  BS607A 2014/10-5     34    <NA>       E    <NA>    <NA>    <NA>
          Lugo BS607A 2014/100-2     29    <NA>    <NA>    <NA>    <NA>    <NA>

dim(tbl)
> [1] 491  81



列数较少,我会用dplyr做: (在此示例中,只有5个要粘贴的数据列)

tbl %.% group_by(prov_solicitud, expediente, Puntos) %.%
  summarise(AR16_09=paste0(AR16_09), BA16_09=paste0(BA16_09),
            BA11_08=paste0(BA11_08), BA17_09=paste0(BA17_09),
            BA22_08=paste0(BA22_08))

如果不输入所有列名,我怎么能这样做? 可能使用byaggregate以及类似prov_solicitud + expediente + Puntos ~ .的公式。 使用as.formula是否有用。有更简单的方法吗?

将数据列中的所有NA转换为""可能是必要的。 我想保留相同的列名。

1 个答案:

答案 0 :(得分:1)

paste0您的意思是将值折叠为单个字符串吗?由于问题中没有样本输出,因此很难知道。如果这是你想要的:

# use a different value for collapse if you want a separator
collapse <- function(x) paste(na.omit(x), collapse = "")
tbl %>% 
    group_by(prov_solicitud, expediente, Puntos) %>% 
    summarise_each("collapse")

或者collapse可以这样写:

collapse <- function(x) na.omit(x) %>% paste(collapse = "")

或者你想要的是:

collapse <- function(x) na.omit(x) %>% toString()
相关问题