R:用两个不同的值替换缺失值 (NA)

R: Substituting missing values (NAs) with two different values

我可能把事情复杂化了 - 很想知道是否有更简单的方法来解决这个问题。我有一个包含 5654 个观察值的数据框 (df) - 1332 个是外国出生的,4322 个是加拿大出生的。

变量df$YR_IMM捕获:"In what year did you come to live in Canada?" 请参阅以下每个移民年份的观察分布 table(df$YR_IMM) :

1920 1926 1928 1930 1939 1942 1944 1946 1947 1948 1949 1950 1951 1952 1953 1954 
2    1    1    2    1    2    1    1    1    9    5    1    7   13    3    5 
1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 
10    5    8    6    6    1    5    1    6    3    7   16   18   12   15   13 
1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 
10   17    8   18   25   16   15   12   16   27   13   16   11    9   17   16 
1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003
24   21   31   36   26   30   26   24   22   30   29   26   47   52   53   28   9

当然,这些只是外国出生的个体(平均值 = 1985)- 然而,有 348 名外国出生的人失踪了。总共有 4670 个 NA,其中还包括加拿大出生的受试者。

如何以

的方式对这些 df$YR_IMM NA 进行编码
348 (NA) --> 1985
4322(NA) --> 100

此外,状态由 df$Brthcoun0 = "born in Canada"1 = "born outside of Canada 给出。

希望这是有道理的 - 谢谢!

编辑:这就是解决方案 ->

df$YR_IMM[is.na(df$YR_IMM) & df$Brthcoun == 0] <- 100 df$YR_IMM[is.na(df$YR_IMM) & df$Brthcoun == 1] <- 1985

试试下面的代码:

df$YR_IMM[is.na(df$YR_IMM) & df$Brthcoun == 0] <- 100
df$YR_IMM[is.na(df$YR_IMM) & df$Brthcoun == 1] <- 1985

希望对您有所帮助!

像这样的东西也应该有效:

df$YR_IMM <- ifelse(is.na(df$YR_IMM) & df$Brthcoun == 0, 100, 1985)