我想做一个多元回归,其中SMDI是我的因变量,其他是我的自变量。这是数据。
d <- read.table(text="SMDI ET PRCP ET_Ch PRCP_Ch
-9999 -9999 -9999 -9999 -9999
-9999 -9999 -9999 -9999 -9999
-9999 621 11.20291 -111 -58.568
1.067062 -9999 9.049039 -9999 -61.8191
2.647571 551 7.778518 -113 -61.5458
0.962622 475 10.32385 -145 -54.0697
-9999 -9999 13.5475 -9999 -40.8121
-9999 -9999 13.60227 -9999 -45.3488
-9999 -9999 -9999 -9999 -9999
-9999 -9999 18.98804 -9999 -45.5135
-9999 594 14.24568 -119 -61.0664
1.061673 471 10.34461 -129 -71.1407
0.535265 420 9.74108 -137 -73.3488
0.010328 420 10.97725 -144 -69.031
0.132918 418 11.02256 -135 -60.2483
0.647663 397 11.98954 -134 -57.1096
-9999 -9999 12.0852 -9999 -46.0085
-9999 -9999 23.51045 -9999 -46.0736
-9999 691 17.06862 -108 -63.3729",
header=TRUE)
回归代码
lm(SMDI ~ ET + ET_Ch + PRCP + PRCP_Ch, data=d)
我的数据使用-9999
作为丢失的代码,因此,我得到的结果不正确。我应该添加什么代码,以便如果表中的任何单元格包含-9999
,它会跳过该代码并仅考虑不包含-9999
值的单元格?
答案 0 :(得分:2)
我相信您希望根据-9999值对数据进行子集化(即删除任何行值为-9999的行。如果这是真的,则以下代码将执行此操作。有人可能会建议{{ 1}}或dplyr
解决更清洁的问题。
data.table
如果您想将-9999视为缺失值,则只需将-9999更改为inds=unique(unlist(apply(d,2,function(x){which(x == -9999)})))
d2 = d[-inds,]
并设置相应的NA
项。
na.action