r - 你好。我在执行下面的 r 代码以用另一个替换一个列值时陷入困境
问题描述
我想用限制值的 50% 替换金额列的值,以防金额超过限制。
cust_spend_trans[cust_spend_trans$Amount > cust_spend_trans$Limit, ] = (0.5*cust_spend_trans$Limit)
这给了我一个错误。
Error in `[<-.data.frame`(`*tmp*`, cust_spend_trans$Amount > cust_spend_trans$Limit, :
replacement has 1500 items, need 6070
解决方案
您的代码试图分配给所有列,因为您使用data[some_rows, ] = ...
. 相反,您需要data[some_rows, "Amount"] = ...
指定要为哪一列赋值:
cust_spend_trans[cust_spend_trans$Amount > cust_spend_trans$Limit, "Amount"] = (0.5*cust_spend_trans$Limit)
或者,去掉里面的逗号[
并放在
$Amount
开头,所以分配给列向量的一个子集data$Amount
cust_spend_trans$Amount[cust_spend_trans$Amount > cust_spend_trans$Limit] = (0.5*cust_spend_trans$Limit)
推荐阅读
- python - Python Zip 文件读取
- python-requests - 忽略设置 OP_NO_SSLv3 的请求
- jquery - 为两个复选框列表调用不同的方法
- python - 导入 pyaudioconvert 时引发 SoxNotInstalled 异常
- javascript - Google Chart vAxis 值未显示
- android - 在 webview android 中加载 URL 的问题
- xml - how to extract the child element from nested tags using xslt
- python - 在python中通过正则表达式匹配Popen输出
- spring-boot - 并发请求的Spring Websocket堆空间错误
- azure - 在 Azure 数据工厂的复制任务中确定最佳写入批量大小