Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在多个条件下运行,无错误,但数据不';不变_R_If Statement_Multiple Conditions - Fatal编程技术网

R 在多个条件下运行,无错误,但数据不';不变

R 在多个条件下运行,无错误,但数据不';不变,r,if-statement,multiple-conditions,R,If Statement,Multiple Conditions,我试图用条件中位数估算缺失数据,没有错误,但数据没有改变。我为什么以及如何使它工作 housing = read.csv('housingsample22.csv') if (housing$Car == 0 && housing$Tunit == 1) { housing$Car = median(housing$Car) } if (housing$Landsize == 0 && housing$Tunit != 1) { housing$L

我试图用条件中位数估算缺失数据,没有错误,但数据没有改变。我为什么以及如何使它工作

housing = read.csv('housingsample22.csv')
if (housing$Car == 0 && housing$Tunit == 1) {
    housing$Car = median(housing$Car)
}
if (housing$Landsize == 0 && housing$Tunit != 1) { 
   housing$Landsize = median(housing$Landsize)
}
if (housing$BuildingArea == 0 && housing$TTHouse == 1) {
    housing$BuildingArea = median(housing$BuildingArea[housing$TTHouse == 1])
}

你的数据没有改变是有原因的。以第一个条件为例:

if (housing$Car == 0 && housing$Tunit == 1) 
   {housing$Car = median(housing$Car)}
您正在检查整列是否等于零。它肯定只需要第一个元素来评估条件

你可以做些什么,比如:

require(dplyr)
median_car = median(housing$Car)

housing = housing %>% 
  mutate(Car = if_else(Car == 0 & Tunit == 1,median_car,Car))

您可以将其他3条语句类似地写在一起。
让我知道这是否有效。

您应该使用类似于
housing$Car[housing$Car==0&housing$Tunit==1]的东西。您是否碰巧在该代码中收到任何警告?可能
警告…:条件的长度大于1,并且只使用第一个元素
?如果您的机架
外壳
只有一行,您就不会收到警告。要添加到@nicola的注释中,没有任何更改,因为等式测试仅与第一行不匹配(因此每个向量比较的第一行)。专业提示:我确实忽略了某些类型的警告,但只有在我期望它们时,否则它们通常表示对数据(或代码)的假设不正确。@r2evans实际上,我使用&…得到了一个警告。。&&没有错误。我对&和&&之间的区别感到困惑,我将搜索一些资料,稍后再弄清楚。谢谢@nicola我稍后会告诉你,我找到了一个迄今为止行之有效的解决方案。谢谢user12190109,你说得对(我的错),
&&
不会警告你,因为
&&
只返回一个
逻辑
。请包括你正在使用的任何外部包。此解决方案在base R中不起作用。包括包(dplyr)。我记得我在使用&时遇到了该错误,但对&&没有警告。是的,你的代码起作用了。谢谢。