r - 从 R 中的因子生成方程

标签 r

<分区>

我是 R 的新手,我正在尝试创建一个新列,即一列减去另一列。例如:

price <- c("$10.00", "$7.15", "$8.75", "12.00", "9.20")
quantity <- c(5, 6, 7, 8, 9)
price <- as.factor(price)
quantity <- as.factor(quantity)
df <- data.frame(price, quantity)

在我的实际数据集中,所有列都作为因子导入。当我尝试创建新列时,我得到了这个:

diff <- price - quantity
In Ops.factor(price, quantity): - not meaningful for factors

我尝试使用 as.numeric(df)、as.numeric(levels(df))、as.numeric(levels(df))[df] 将数据强制转换为数字,并将 stringsAsFactors 设置为 false,但是数据被转换为 NA。 Data.matrix 更改值。还有另一种方法可以使上述等式起作用吗?谢谢!

最佳答案

如果你想对它们进行数学运算,你应该避免在价格列中使用 ""和 $ 并避免将它们转换为因子:

price <- c(10.00, 7.15, 8.75, 12.00, 9.20)
quantity <- c(5, 6, 7, 8, 9)
df <- data.frame(price, quantity)

df$diff <- price - quantity

df
  price quantity diff
1 10.00        5 5.00
2  7.15        6 1.15
3  8.75        7 1.75
4 12.00        8 4.00
5  9.20        9 0.20

关于r - 从 R 中的因子生成方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25356620/

相关文章:

r - 如何将 R 包快照到 Packrat?

r - 根据时间序列中的差距对行进行分组

r - 在 R 中的一行代码中减去和添加一个数量?

r - R中的时空聚类方法或包?

r - 列出 k 个数字的所有排列,取自 0 :k,,总和为 k

r - ggplot : aes vs aes_string,或如何以编程方式指定列名称?

r - 是否有 R 命令可以确定数据帧值是否可以转换为数字格式?

r - 总和为目标值的集合的所有可能组合

r - 使用 R/tidyverse 中的 pivot_wider() 将所有列旋转得更宽(ID 列除外)

r - 在嵌套数据框列上使用 mutate_at() 生成多个非嵌套列