Подтвердить что ты не робот

суммировать два столбца в R

Я чувствую себя немного смущенным, поскольку я пытаюсь добавить два столбца в R, чтобы получить продукт.

я пытался

sum(col1,col2)

но это возвращает

Error in Summary.factor(c(49L, 48L, 47L, 46L, 46L, 45L, 45L, 44L, 43L,  : 
  sum not meaningful for factors

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

4b9b3361

Ответ 1

Функция sum добавит все числа вместе, чтобы создать одно число, а не вектор (ну, по крайней мере, не вектор длины больше 1).

Похоже, что хотя бы один из ваших столбцов является фактором. Вы можете преобразовать их в числовые векторы, проверив это

head(as.numeric(data$col1))  # make sure this gives you the right output

И если это выглядит правильно,

data$col1 <- as.numeric(data$col1)
data$col2 <- as.numeric(data$col2)

Возможно, вам придется сначала преобразовать их в символы. В этом случае

data$col1 <- as.numeric(as.character(data$col1))
data$col2 <- as.numeric(as.character(data$col2))

Трудно сказать, что вам следует делать, не имея возможности увидеть ваши данные.

Когда столбцы являются числовыми, вам просто нужно сделать

data$col3 <- data$col1 + data$col2

Ответ 2

Может быть, один или два из ваших столбцов могут иметь в себе фактор, или, что более вероятно, ваши столбцы могут быть отформатированы как факторы. Пожалуйста, дайте попробовать str (col1) и str (col2)? Это должно указать вам, в каком формате находятся эти столбцы.

Я не уверен, что вы пытаетесь добавить строки столбца, чтобы создать новый столбец или просто все числа в обоих столбцах, чтобы получить один номер.

Ответ 3

tablename$column3=rowSums(cbind(tablename$column1,tablename$column2),na.rm=TRUE)

Это можно использовать для игнорирования пустых значений в листе Excel.
Я использовал для набора данных Euro stat.

Этот пример работает в R:

crime_stat_data$All_theft <-rowSums(cbind(crime_stat_data$Theft,crime_stat_data$Theft_of_a_motorised_land_vehicle, crime_stat_data$Burglary, crime_stat_data$Burglary_of_private_residential_premises), na.rm=TRUE)  

Ответ 4

Попробуйте создать столбец 3 в виде суммы столбца 1 + столбца 2 в таблице.

tablename$column3=rowSums(cbind(tablename$column1,tablename$column2))