Исключить один столбец из sapply

#r #sapply

#r #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"
  

Итак, я использую этот фрагмент кода, который отлично работает, когда каждый столбец числовой, хотя первый является символьным, и поэтому я обнаружил ошибку. Как я могу исключить первый столбец из кода?

#Сгруппируйте столбцы по patern, найдите шаблон и выполните цикл

 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
  

Это код ошибки, который я получаю

Ошибка в суммах строк(DEPTpolicedata_2012[, grep(xx, names(DEPTpolicedata_2012)): ‘x’ должен быть числовым

Комментарии:

1. Извините, код ошибки в соответствии с примером — это ошибка в rowSums(dataframe[, grep(xx, names (dataframe)), : ‘x’ должен быть числовым

2. Каковы типы данных каждого столбца в dataframe ? Такое ощущение, что некоторые столбцы нечисловые.

Ответ №1:

Вы можете просто удалить первый столбец с помощью

 patterns$Départements <- NULL
  

Комментарии:

1. Спасибо. Но это просто возвращает ошибку в шаблонах[, -1]: неверное количество измерений

2. Вы действительно правы… Это FALSE полностью, когда я сохраняю шаблоны в векторе. Однако в исходном df только первый столбец является символьным.

3. Я обновил ответ, поэтому вы можете удалить первый столбец.

4. Возможно, проблема заключается только в том, что векторный шаблон — это просто символьные значения. Он должен каким-то образом указывать, как получать числовые значения, кроме столбца 1