这个问题在这里已有答案:
我是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更改值 . 是否有另一种方法可以使上述方程起作用?谢谢!
3 回答
您应该避免使用“”和$ in price列,如果您想对它们进行数学运算,请避免将它们转换为因子:
尝试:
或者来自
df
如果你坚持使用因子列,你可以添加一个带
within()
的新diff
列和一些类型强制您也可以考虑返回并将数据重新读入R.这很简单,并且会使事情变得容易一些 . 这是你如何做到这一点并以这种方式获得所需的结果 .
创建数据文件:这对您来说不是必需的,因为您可以再次读取原始文件 .
将数据读入R,删除
$
符号,并计算差异: