如何对包含空格的dataframe列进行算术运算

问题描述 投票:0回答:1

我在这里有一个数据框,并且想要创建一个新列,它是一列除以另一列的商。

首先,我试过:

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

当我以这种方式格式化时,我收到错误:

“错误:df $ dividend列/ df $ divisor列中的意外符号”

我也尝试过:

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

我在这里得到错误:

“二元运算符的非数字参数”

用于数学的两列在名称中都有空格,如果这会产生影响。

r arithmetic-expressions
1个回答
0
投票

正如joran在评论中提到的那样,在列名中添加空格是不明智的。它可能会导致很多麻烦。听起来你的列不是数字。您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.