首页 > 解决方案 > 从 sapply 中排除一列

问题描述

我有一个包含多个列的数据框,我想根据它们的名称对其进行分组。当多个列名称响应相同的模式时,我希望它们分组在一个列中,该列是该组的总和。

colnames(dataframe)

[1] "Départements" "01...3"       "01...4"       "01...5"       "02...6"       "02...7"       "02...8"       "02...9"       "02...10"      "03...11"     
 [11] "03...12"      "03...13"      "04...14"      "04...15"      "05...16"      "05...17"      "05...18"      "06...19"      "06...20"      "06...21"

所以我使用这段代码,当每一列都是数字时,它工作得很好,尽管第一个是字符,因此我遇到了错误。如何从代码中排除第一列?

#按模式分组列,寻找模式并循环

patterns <- unique(substr(names(dataframe_2012), 1, 3))`  #store patterns in a vector

dataframe <- sapply(patterns, function(xx) rowSums(dataframe[,grep(xx, names(dataframe)), drop=FALSE]))  
#loop through

这是我得到的错误代码

rowSums 中的错误(DEPTpolicedata_2012[,grep(xx,names(DEPTpolicedata_2012)),:“x”必须是数字

标签: rsapply

解决方案


您可以使用简单地删除第一列

patterns$Départements <- NULL

推荐阅读