我需要一个虚拟变量来识别孩子的智商高的母亲,而不会直接问到这个问题。
我对R不太熟悉,因此我的问题可能很简单。这是使用的数据:
data <- data.frame(family=c(1,1,1,2,2,2,3,3,3,3),
position=c("mother","son","father",
"mother","son","father",
"mother","son","son","son"),
sex=c(0,1,1,0,0,1,0,1,0,0),
highiq=c(0,0,1,1,1,1,0,0,1,0))
家庭告诉哪些观察值构成一个家庭组,位置通知个人在家庭中的位置,性别它是性别和当观察结果显示高智商时,highiq 等于1。我已经通过以下方法设法找到智商高的儿子:
dat2 <- dat%>%
mutate(high.son = position=="son"& highiq==1)
但是我不能再走了。我想一个可能的解决方案是为母亲(即母亲)创建一个虚拟变量,并为每个至少有一个儿子具有较高智商的家庭成员(IQ.family)创建另一个将1赋予属性的虚拟变量。家庭没有智商高的儿子,那么他们全都为0,然后将 is.mother 虚拟变量乘以这个新的 IQ.family 变量,应该只让智商高的母亲成为儿子。
此策略的一个问题是我无法生成变量 IQ.family ,因为我找不到根据数据集的其他信息将值归于组的方法
答案 0 :(得分:0)
any(highiq[position == 'son'] == 1)
,则 TRUE
为highIQ == 1
。因此,如果position == 'mother'
,则需要将该值分配给新变量,否则分配0。
library(dplyr)
data %>%
group_by(family) %>%
mutate(mother_highIQ_son =
ifelse(position == 'mother', any(highiq[position == 'son'] == 1), 0))
# # A tibble: 10 x 5
# # Groups: family [3]
# family position sex highiq mother_highIQ_son
# <dbl> <chr> <dbl> <dbl> <dbl>
# 1 1 mother 0 0 0
# 2 1 son 1 0 0
# 3 1 father 1 1 0
# 4 2 mother 0 1 1
# 5 2 son 0 1 0
# 6 2 father 1 1 0
# 7 3 mother 0 0 1
# 8 3 son 1 0 0
# 9 3 son 0 1 0
# 10 3 son 0 0 0
== 1
不是严格必需的,但是如果不包含UIBezierPath *maskPath1 = [UIBezierPath bezierPathWithRoundedRect:CGRectInset(view.bounds, 0.5, 0.5) byRoundingCorners:corners cornerRadii:CGSizeMake(6.0, 6.0)];
CAShapeLayer *maskLayer1 = [[CAShapeLayer alloc] init];
maskLayer1.frame = view.bounds;
maskLayer1.path = maskPath1.CGPath;
maskLayer1.strokeColor = view.layer.borderColor;
maskLayer1.lineJoin = kCALineJoinRound;
view.layer.mask = maskLayer1;
view.layer.masksToBounds = YES;
[view setNeedsDisplay];
,则会收到有关强制类型的警告。