如何对包含空格的dataframe列进行算术运算
我这里有一个数据框,我想创建一个新列,它是一列除以另一列的商 首先,我尝试:如何对包含空格的dataframe列进行算术运算,r,arithmetic-expressions,R,Arithmetic Expressions,我这里有一个数据框,我想创建一个新列,它是一列除以另一列的商 首先,我尝试: df$new_column_name <- df$dividend column / df$divisor column df$new\u column\u name正如joran在评论中提到的,在列名中使用空格确实是不可取的。它会导致很多头痛。听起来你的列不是数字。您可以使用str查看您拥有的列的类型。下面是一个使用tidyverse软件包解决您的问题的可能方法的示例,我强烈建议您查看该软件包 library
df$new_column_name <- df$dividend column / df$divisor column
df$new\u column\u name正如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
库(tidyverse)
#创建列名中带有空格的数据框
df“data.frame”:5个obs。共有2个变量:
#>$股息栏:整数1 2 3 4 5
#>$divisor列:int 6 7 8 9 10
#使用set_tidy_names将列名中的空格替换为“.”
#将列更改为数值
#使用dplyr::mutate创建新列
df%
将变量(c(“被除数列”、“除数列”))变为.numeric)%>%
mutate(new_column_name=divident.column/divisior.column)
#>新名称:
#>股息列->股息.column
#>除数列->除数.column
请共享您的数据。如果它们是ColName中的注释,则必须使用反勾号。尝试在控制台中键入df$
,然后按查看我的意思。这里的一般要点是:(1)不要在列名中使用空格,(2)使用字符串选择列,或者如果名称中有空格之类的“坏”字,$
是一个糟糕的选择,而应该使用df[[“股息列”]]
。我想应该是抽搐。但请务必使用dput()
共享数据以给出详细答案df$new\u column\u name添加数据框的示例,df
,否则您的问题可能会被关闭。
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