当前位置:  开发笔记 > 编程语言 > 正文

在R中,如何根据另一个数据框中的范围对一个数据框中的值进行分类?

如何解决《在R中,如何根据另一个数据框中的范围对一个数据框中的值进行分类?》经验,为你挑选了1个好方法。

通常,我如何根据另一个数据帧中的因子值对数据帧的一列中的值进行分类?例如,给定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)对值进行分类.



1> akrun..:

我们可以用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=FALSEcut

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有