我是R的新用户,我无法理解如何在一系列类似命名的变量中循环ifelse逻辑语句。我有一个家庭的前30名成员的性别和年龄属性,并希望为每个家庭成员创建一个新变量,如果家庭成员既是女性又是成年人(即18岁以上),其值为1 。我将最终总结这些数值来计算家庭中成年女性的数量。我觉得这不是一个难题,但是我的小便很难受。提前感谢您提供任何帮助,我提出的未解决的解决方法如下所示。
{{1}}
...
答案 0 :(得分:0)
你没有提供示例数据,所以我先创建一些:
context.Type().getText(
如果您只需要快速计算成年女性,请使用x = data.frame(sex = c("m", "f", "f", "f"), age=c(19,10,20,21))
> x
sex age
1 m 19
2 f 10
3 f 20
4 f 21
和which
:
length
如果要创建新变量,可以使用for循环:
> which(x$sex == "f" & x$age >= 18) # points to matching indices
[1] 3 4
length(which(x$sex == "f" & x$age >= 18))
[1] 2
或者,更好的是,您已经尝试过的矢量化x$adultfemale = NA
for(i in 1:nrow(x)) {
if(x$sex[i] == "f" & x$age[i] >= 18) {
x$adultfemale[i] = 1
} else {
x$adultfemale[i] = 0
}
}
,特别是如果您的数据集很大(这更快):
ifelse