我有一个非常宽的dataframe:>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))我怎样才能不键入所有的列名就能做到这一点?也许使用by或aggregate以及类似于prov_solicitud + expediente + Puntos ~ .的公式。使用as.formula会有用吗?有更简单的方法吗?
可能需要将数据列中的所有NA转换为""。我想保留同样的列名。
发布于 2014-07-05 22:07:02
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()https://stackoverflow.com/questions/24590546
复制相似问题