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)。我记得我在使用&时遇到了该错误,但对&&没有警告。是的,你的代码起作用了。谢谢。