【发布时间】:2020-09-07 11:46:46
【问题描述】:
我有一个包含多个列的数据框,我想根据它们的名称对其进行分组。当多个列名称响应相同的模式时,我希望将它们分组在一个列中,并且该列是该组的总和。
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”必须是数字
【问题讨论】:
-
对不起,示例中的错误代码是 Error in rowSums(dataframe[, grep(xx, names(dataframe)), : 'x' must be numeric
-
dataframe中每一列的数据类型是什么?感觉有些列不是数字的。