【发布时间】:2018-12-28 12:02:40
【问题描述】:
我有一个如下的数据集
salaries <- read.csv('salaries.csv', header=TRUE)
print(salaries)
Name Job Salary CompanyExperience IndustryExperience
John Engineer 50000 3 12
Adam Manager 55000 6 7
Alice Manager #N/A 6 6
Bob Engineer 65000 5 #N/A
Carl Engineer 70000 #N/A 10
我想绘制其中的一些信息,但是我需要通过删除任何包含“#N/A”文本字符串的行(由 MS Excel 生成)来排除任何带有“#N/A”的数据点导出到 CSV 的电子表格)以绘制 Salary ~ CompanyExperience。 我的子集代码如下:
salaries <-salaries[salaries$CompanyExperience!="#N/A" &
salaries$Salary!="#N/A",]
#write.csv(salaries, "salaries2.csv")
#salaries <- read.csv('salaries2.csv', header=TRUE)
print(salaries)
现在这似乎没有任何问题,产生:
Name Job Salary CompanyExperience IndustryExperience
1 John Engineer 50000 3 12
2 Adam Manager 55000 6 7
4 Bob Engineer 65000 5 #N/A
这看起来不错,但是一旦我尝试将此数据子集放入线性回归中,就会出现错误:
> salarylinear <- lm(salaries$CompanyExperience ~ salaries$Salary)
Warning messages:
1: In model.response(mf, "numeric") :
using type = "numeric" with a factor response will be ignored
2: In Ops.factor(y, z$residuals) : ‘-’ not meaningful for factors
现在,如果我做了一些实验并发现如果我使用“!= 10000”或“
X Name Job Salary CompanyExperience IndustryExperience
1 1 John Engineer 50000 3 12
2 2 Adam Manager 55000 6 7
3 4 Bob Engineer 65000 5 #N/A
我已经在网上搜索过,但找不到发生这种情况的任何原因。有没有一种方法可以通过排除“#N/A”字符串来生成可用的子集,而不必求助于将数据写入磁盘并再次读入内存?
【问题讨论】: