【发布时间】:2018-03-14 22:23:02
【问题描述】:
这是我的第一个问题,请多多包涵
我正在使用已经存在的变量 SB1 在我的数据框 wm.13 中创建一个新变量 age.f.sex。在原始数据框中,SB1 表示联合国儿童基金会多指标类集调查中受访女性的首次性交年龄。 SB1 可以取的值是:
> sort(unique(wm.13$SB1))
[1] 0 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
[26] 30 31 32 33 34 35 36 37 38 39 40 41 42 44 48 95 97 99
这里是SB1可以取的值的含义
- 0 表示她从未发生过性行为
- 97 和 99 表示“不记得/不知道”
- 95 表示她在开始与丈夫/伴侣生活时进行了第一次性交(有一个特定变量,即
MA9) - 0 到 95 之间的任何数字是他们第一次性交的声明年龄
- 还有
sort()没有显示的NA,但如果我只使用unique(),它们就会出现
我从SB1 创建了一个新变量,我称之为age.f.sex。
wm.13$age.f.sex <- wm.13$SB1
我将 0、97 和 99 值替换为 NA,并将原始 NA 保留在 SB1 中。我使用以下代码做到了这一点:
wm.13$age.f.sex[wm.13$SB1 == 0] <- NA
wm.13$age.f.sex[wm.13$SB1 == 97] <- NA
wm.13$age.f.sex[wm.13$SB1 == 99] <- NA
wm.13$age.f.sex[is.na(wm.13$SB1)] <- NA
直到这里一切正常。但是,我遇到了 95 值的问题。我想编码,以便在SB1(即第一次性交的年龄)中具有价值 95 的观察值将具有来自 MA9(即女性开始与伴侣/丈夫生活的年龄)的值新变量age.f.sex。
我是从这段代码开始的
> wm.13$age.f.sex[wm.13$SB1 == 95] <- wm.13$MA9
但我收到以下错误消息
Error in wm.13$age.f.sex[wm.13$SB1 == 95] <- wm.13$MA9 :
NAs are not allowed in subscripted assignments
在这个网站上进行了一些研究后,我意识到我可能也需要对代码的右侧进行子集化,但老实说我不知道该怎么做。我有一种感觉,which() 或 if.else() 可能会在这里派上用场,但我无法弄清楚他们的论点。我在这个网站上找到的例子展示了如何估算一个特定的值,但是根据观察值在另一个变量中的值,我找不到任何关于子集的东西。
我希望我已经足够清楚了。任何建议将不胜感激。
谢谢,马诺洛
【问题讨论】: