通常,我如何根据另一个数据帧中的因子值对数据帧的一列中的值进行分类?例如,给定df1和df2我想生成df3(或更新df1):
> df1 NewAge 1 5 2 25 3 18 4 9 5 43 6 15 7 17 > df2 AgeStart AgeEnd AgeType 1 0 10 A 2 10 20 B 3 20 30 A 4 30 40 B 5 40 50 A
我想df3为:
NewAge Type 5 A 25 A 18 B 9 A 43 A 15 B 17 B
我使用cut()来生成间隔
df2_cut <- data.frame(NewAge, "AgeRange" = cut(NewAge, breaks=AgeStart, right=F, include.lowest=T)) > df2_cut NewAge AgeRange 1 5 [0,10) 2 25 [20,30) 3 18 [10,20) 4 9 [0,10) 5 43 [40,50] 6 15 [10,20) 7 17 [10,20)
但我不知道如何df2_cut
根据区间类型(即A或B)对值进行分类.
我们可以用findInterval
.输出将是一个数字索引,我们用它来从'AgeType'获取相应的元素.
df3 <- transform(df1, Type=df2$AgeType[findInterval(NewAge, df2$AgeStart)]) df3 # NewAge Type #1 5 A #2 25 A #3 18 B #4 9 A #5 43 A #6 15 B #7 17 B
或者labels=FALSE
在cut