r - 如何对包含空格的数据框列进行算术运算
问题描述
我在这里有一个数据框,想创建一个新列,它是一列除以另一列的商。
首先,我试过:
df$new_column_name <- df$dividend column / df$divisor column
当我以这种方式格式化时,我收到错误:
“错误:df$dividend 列/df$divisor 列中出现意外符号”
我也试过:
df$new_column_name <- df$"dividend column" / df$"divisor column"
在这里我得到错误:
“二元运算符的非数字参数”
用于数学的两列在名称中都有空格,如果这会有所不同。
解决方案
正如 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
推荐阅读
- virtual-machine - 如果两者都是虚拟机管理程序,如何在 kvm 而不是 xen 上设置 Virtual Box?
- java - java.lang.ClassNotFoundException:org.springframework.web.servlet.view.InternalResourseViewResolver
- intellij-idea - Intellij 是否有设置选项或插件来折叠尾随右括号?
- python - Python 不让我在获得平均分时只打印一次
- javascript - 获取css调整大小元素的值
- c# - C#如何检索任何PC/笔记本电脑上的所有用户名
- android - 连接到多个 BLE 设备时 onCharacteristicRead 错误 129
- flutter - Flutter:计时器无法停止
- php - 为什么google cloud vm instance上的lamp stack中的mysql会返回错误的查询结果?
- c# - C#计算字符串中的项目数