【问题标题】:Error with using a function to create a new variable with subtraction between variables in R使用函数创建新变量时出错,并在 R 中的变量之间进行减法
【发布时间】:2021-07-15 16:50:58
【问题描述】:

我有一个马赛出租房地产市场的庞大数据集(名为 marseilleannonces),其中包含一些变量:

structure(list(ID = c("af626000-342e-11e8-a56e-8326540c0e87", 
"20629290-c926-11e6-a626-abf6d3bf8a25", "8495af50-b92c-11e5-86ef-abf6d3bf8a25", 
"a4299b60-11e3-11ea-9589-c1180fadeaa5", "833f81d0-d3da-11ea-b28a-1b6a75606a9a", 
"75358b40-6d76-11e5-bb7a-cfb08fbdec46", "8d6f22f3-abc7-11e4-b16a-1100e6029c1e", 
"10ed2580-28cb-11e9-bcd9-d3a30a46a7fe", "dd156b70-1534-11e6-afdf-abf6d3bf8a25", 
"15688650-2934-11e8-ab89-41d65c7c6457"), TYPE = c("APARTMENT", 
"APARTMENT", "APARTMENT", "APARTMENT", "PREMISES", "APARTMENT", 
"APARTMENT", "APARTMENT", "APARTMENT", "PREMISES"), SURFACE = c(19, 
29, 17, 55, 35, 50, 67, 30, 28, 45), ROOM_COUNT = c(1, 2, 1, 
3, 1, 2, 2, 1, 1, NA), PRICE = c(295, 470, 290, 610, 550, 500, 
500, 655, 445, 1943), RENTAL_EXPENSES = c(45, NA, NA, NA, NA, 
NA, 40, NA, NA, NA), RENTAL_EXPENSES_INCLUDED = c(TRUE, TRUE, 
NA, TRUE, TRUE, TRUE, TRUE, TRUE, NA, NA)), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))

在此数据集中,如果 RENTAL_EXPENSES_INCLUDED=TRUE,则变量 PRICE 包含 RENTAL_EXPENSES 中的值,如果 RENTAL_EXPENSES_INCLUDED=FALSE,则变量 PRICE 不包含 RENTAL_EXPENSES 中的值。我的目标是创建一个新列,其中的价格不包含 RENTAL_EXPENSES 中的值,名为 HC。我试图创建一个函数:

for(i in 1:length(marseilleannonces$RENTAL_EXPENSES_INCLUDED)){
  x = marseilleannonces$RENTAL_EXPENSES_INCLUDED[i]
  if(x == TRUE){
    marseilleannonces$HC[i] = PRICE[i]-RENTAL_EXPENSES[i]
  }
  else {
    marseilleannonces$HC[i] = PRICE[i]
  }
}

R 告诉我有一个需要 TRUE/FALSE 的缺失值。也许我的数据集中有很多 NA 的事实是一个问题。 欢迎任何建议是正确的方向。

提前致谢!

【问题讨论】:

  • 我认为 NA 确实是问题所在,请尝试在您的 if 中处理它们或将它们从您的数据集中删除。后者见this
  • 您可以编辑您的帖子以包含此数据集的预期输出吗?

标签: r loops


【解决方案1】:

编辑:根据您的 cmets:

marseillannonces %>% 
  mutate(HC = case_when(RENTAL_EXPENSES_INCLUDED == TRUE ~ PRICE - RENTAL_EXPENSES,
                        RENTAL_EXPENSES_INCLUDED == FALSE ~ PRICE))

【讨论】:

  • 感谢您的回复。我的目标是在没有租金费用的情况下创建一个包含房产价格的专栏。在这个数据集中,有些价格包含租金,有些没有,有些我们不知道。因此,NA 必须保持 NA。
  • 我编辑了我的答案。当RENTAL_EXPENSES_INCLUDEDTRUE时,HCPRICE - RENTAL_EXPENSES;如果RENTAL_EXPENSES_INCLUDED FALSE,那么HC 就是PRICE;当RENTAL_EXPENSES_INCLUDED NA 时,HC 也是NA
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多