我很擅长使用R,所以请放轻松。
我正在处理一项调查数据,该调查对大致相同的受访者群体进行了两次管理。此外,该调查还要求受访者列出他们的身高。
在调查进行第二轮调查之前,一些原始的一波受访者离开了样本,一些新的受访者到了。当调查第二次进行时,它首先是一个过滤问题,询问受访者之前是否参加了调查。第一次调查的受访者没有被问及他们在第二次调查中的身高,但是“新”受访者被问及他们的身高。
我正在尝试创建一个变量,表示参与wave-two调查的所有受访者的身高。由于参与第一波调查的受访者缺少波二高问题的数据,我需要用波一次调查中的值替换这些缺失值。
我意识到这可能是一个简单的修复,但我不知道该怎么做。我的数据:
Height.W1 =包含第一次调查的受访者身高的英尺矢量。
Height.W2 =参与第二次调查的受访者的类似变量。
Interview.Status =表示受访者是否参加了第一次调查的变量。假设值为“1”表示受访者进行了第一次调查,因此缺少Height.W2变量的数据。
如何使用Height.W1中的值替换Height.W2的值,条件是Interview.Status == 1?
提前致谢。
答案 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
替换为NA
,Height.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
NA
有Interview.Status==1
,但Height.W1
NA
是否Interview.Status!=1
。假设它有一个单行可能
Height <- apply(df[, c("Height.W1", "Height.W2")], 1, min, na.rm = T)
或max
,sum
或任何其他相关功能。