我正在使用的数据集将缺失值视为-99,现在我需要将所有这些-99替换为同一行但不同列的数字。
以下是示例
V1 V2 V3 V4 V5 V6 V7
1 1958 3 1958.208 315.71 315.71 314.62 -1
2 1958 4 1958.292 317.45 317.45 315.29 -1
3 1958 5 1958.375 317.50 317.50 314.71 -1
4 1958 6 1958.458 **-99.99** *317.10* 314.85 -1
我想用(V6,4)代替(V5,4)。
V5中有几个缺失数据,我们希望用V6中的同一行替换。
如何实现这一目标?
答案 0 :(得分:2)
在读取数据时指定NA
值会更明智。
您可以通过在na.string
(或其某些变体)中指定read.table()
参数来执行此操作。
根据您的特定数据,不清楚您是否有定义的方案(总是替换为下一列中的值),但是要将列V5
中的“缺失”值替换为其各自的值V6
并假设您的数据名为DF
DF <- within(DF, V5 <- replace(V5, V5 == -99.99, V6[V5== -99.99])
会起作用。
如果您已正确指定-99.99作为缺失值(NA),那么
DF <- within(DF, V5 <- replace(V5, is.na(V5), V6[is.na(V5)])