首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R聚合数据并粘贴到多个列上。

R聚合数据并粘贴到多个列上。
EN

Stack Overflow用户
提问于 2014-07-05 21:03:55
回答 1查看 947关注 0票数 0

我有一个非常宽的dataframe:>80列。我想对左边的一些列进行聚合,将paste0应用于其他列:

代码语言:javascript
复制
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个数据列需要粘贴)。

代码语言:javascript
复制
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转换为""。我想保留同样的列名。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-05 22:07:02

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

代码语言:javascript
复制
# 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也可以写成这样:

代码语言:javascript
复制
collapse <- function(x) na.omit(x) %>% paste(collapse = "")

或者你想要的是:

代码语言:javascript
复制
collapse <- function(x) na.omit(x) %>% toString()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24590546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档