使用Vector3中的值替换Vector1中的值,条件是Vector3中的值

时间:2016-06-17 15:48:26

标签: r

我很擅长使用R,所以请放轻松。

我正在处理一项调查数据,该调查对大致相同的受访者群体进行了两次管理。此外,该调查还要求受访者列出他们的身高。

在调查进行第二轮调查之前,一些原始的一波受访者离开了样本,一些新的受访者到了。当调查第二次进行时,它首先是一个过滤问题,询问受访者之前是否参加了调查。第一次调查的受访者没有被问及他们在第二次调查中的身高,但是“新”受访者被问及他们的身高。

我正在尝试创建一个变量,表示参与wave-two调查的所有受访者的身高。由于参与第一波调查的受访者缺少波二高问题的数据,我需要用波一次调查中的值替换这些缺失值。

我意识到这可能是一个简单的修复,但我不知道该怎么做。我的数据:

Height.W1 =包含第一次调查的受访者身高的英尺矢量。

Height.W2 =参与第二次调查的受访者的类似变量。

Interview.Status =表示受访者是否参加了第一次调查的变量。假设值为“1”表示受访者进行了第一次调查,因此缺少Height.W2变量的数据。

如何使用Height.W1中的值替换Height.W2的值,条件是Interview.Status == 1?

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果我正确理解你的问题:

使一些数据可以使用,一些数据使用Interview.Status == 1,一些数据使用Interview.Status==0

> df <- structure(list(Height.W1 = c(60, 62, 58, 64), Height.W2 = c(60, NA, 58, NA), Interview.Status = c(0, 1, 0, 1)), .Names = c("Height.W1", "Height.W2", "Interview.Status"), row.names = c(NA, 4L), class = "data.frame")
> df
  Height.W1 Height.W2 Interview.Status
1        60        60                0
2        62        NA                1
3        58        58                0
4        64        NA                1

我使用Interview.Status == 1进行了子集,并将Height.W2替换为NAHeight.W1

> df$Height.W2[df$Interview.Status == 1] <- df$Height.W1[df$Interview.Status == 1]
> df
  Height.W1 Height.W2 Interview.Status
1        60        60                0
2        62        62                1
3        58        58                0
4        64        64                1

答案 1 :(得分:0)

很明显,Height.W2 NAInterview.Status==1,但Height.W1 NA是否Interview.Status!=1。假设它有一个单行可能

Height <- apply(df[, c("Height.W1", "Height.W2")], 1, min, na.rm = T)

maxsum或任何其他相关功能。