【问题标题】:Conditional division in RR中的条件除法
【发布时间】:2016-10-18 14:07:39
【问题描述】:

我正在尝试计算 R 中产品的价格。因为并非所有产品都已售出,有些产品没有实际销售价格。我想计算销售价格并为没有销售价格的值返回一个空格。

我开始使用这个功能,但它似乎不起作用。

sale.price <- function(price) {
  if (CM.sample$Sales > 0) {
    return(CM.sample$Sales / CM.sample$Product.Quantity.Purchased)
  } else {
    return("")
  }
 }

 sale.price <- as.numeric(sapply(sale.price, price))

这是我的数据示例。

Product   Sales   Order.Quantity  Price
P1         120         2
P2          45         1
P3                
P4          25         2
P5   
P6         180         3

理想情况下,我希望最终结果看起来像这样。

 Product   Sales   Order.Quantity  Price
 P1         120         2           60
 P2          45         1           45
 P3                                 
 P4          25         2           12.5
 P5   
 P6         180         3           60

【问题讨论】:

  • 您遇到了几个问题,但如果您使用dput 提供数据,向您展示如何解决这些问题会容易得多。将dput(CM.sample[1:6, ]) 的输出粘贴到您的问题中
  • 感谢您的回复@eipi10,我尝试使用“dput”输出,但输出非常大且不可读。 data.frame 相当大,有些列包含包含文本字符串的大数组,这就是它可能不起作用的原因?

标签: r conditional


【解决方案1】:

怎么样:

# Initialize with ""
CM.sample$Price <- ""
# Calculate for rows with quantites
CM.sample$Price[as.numeric(as.character(CM.sample$Sales)) > 0] <- CM.sample$Sales / CM.sample$Product.Quantity.Purchased

【讨论】:

  • 看起来Sales 有空字符串(""" "),其中缺少值。如果是这样,则Sales 被编码为字符或因子,除法将分别导致错误或全部NA 加上警告。
  • 感谢@eipi10 的相关评论!现在应该可以工作了
  • 谢谢@HubertL,eipi10 是正确的,空字符串包含"" 这是我的问题所在,因为我不确定如何处理错误。我尝试了您的代码,但我为包含 Sales 和/或 Order.Quantity 值的字段恢复了 NA,空字符串仍然为空,这很好。
猜你喜欢
  • 2015-08-31
  • 2021-06-09
  • 2022-01-23
  • 2020-09-02
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多