Как сделать арифметику со столбцами данных, которые содержат пробелы - PullRequest
0 голосов
/ 31 августа 2018

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

Сначала я попробовал:

df$new_column_name <- df$dividend column / df$divisor column

Когда я форматирую это таким образом, я получаю ошибку:

«Ошибка: неожиданный символ в столбце df $ divndor / столбце df $ divisor»

Я также пробовал:

df$new_column_name <- df$"dividend column" / df$"divisor column"

Здесь я получаю сообщение об ошибке:

«нечисловой аргумент бинарного оператора»

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

1 Ответ

0 голосов
/ 31 августа 2018

Как упоминал в комментариях Джоран, в именах столбцов не рекомендуется использовать пробелы. Это может привести к множеству головных болей. Похоже, ваши столбцы не являются числовыми. Вы можете использовать str для просмотра типов столбцов, которые у вас есть. Ниже приведен пример возможного решения вашей проблемы с использованием пакета tidyverse, который я настоятельно рекомендую проверить.

library(tidyverse)

# create data frame with space in column names
df <- data.frame("dividend column" = 1:5, "divisor column" = 6:10, check.names = FALSE)

# use str to get the classes of each column
str(df)
#> 'data.frame':    5 obs. of  2 variables:
#>  $ dividend column: int  1 2 3 4 5
#>  $ divisor column : int  6 7 8 9 10

# use set_tidy_names to replace space in column names with '.'
# change columns to numeric values
# use dplyr::mutate to create the new column
df <- set_tidy_names(df, syntactic = TRUE) %>% 
  mutate_at(vars(c("dividend.column", "divisor.column")), as.numeric) %>% 
  mutate(new_column_name = dividend.column/divisor.column)
#> New names:
#> dividend column -> dividend.column
#> divisor column -> divisor.column
...