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

标签 r grouping aggregate

一般来说,如何根据另一个数据框中的因子值对数据框的一列中的值进行分类?例如,给定 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=FALSEcut

关于r - 在 R 中,如何根据另一个数据框中的范围对一个数据框中的值进行分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34427823/

相关文章:

r - 在 R 中制作日期表格时,如何填写缺失的日期以显示频率为 0?

r - 如何计算两个数据框的逐元素商?

lucene - 使用 elasticsearch 对组中的最新文档进行聚合

python - pandas df 中的多列分组和计数总和

mysql - 如何编写查询以将多个字符串聚合到一个字段中?

r - 平滑样条(): fitted model does not match user-specified degree of freedom

r - 是否可以使用 magrittr 在单个工作流程中创建两个数据框?

dictionary - 戈朗 : group and sum slice of structs

grouping - 选择每组前 X 个结果

python - Numpy:具有不同值的索引样本组