基于R中的其他列插入类别列

基于R中的其他列插入类别列,r,dataframe,columnsorting,R,Dataframe,Columnsorting,我的数据帧当前看起来如下所示: Tree Cookie Age C1T1 A 10 C1T1 A 20 C1T1 A 30 C1T1 B 15 C1T1 B 20 C1T1 B 25 C1T2 A 12 C1T2 A 20 C1T2 B 5 C1T2 B 13 因此,对于每棵“树”,我有几个“饼干”,对于每个饼干,我有不同的年龄(基本上代表树生命的不同部分)。我想添加另

我的数据帧当前看起来如下所示:


Tree Cookie Age 
C1T1   A     10
C1T1   A     20
C1T1   A     30
C1T1   B     15
C1T1   B     20
C1T1   B     25
C1T2   A     12
C1T2   A     20
C1T2   B     5
C1T2   B     13

因此,对于每棵“树”,我有几个“饼干”,对于每个饼干,我有不同的年龄(基本上代表树生命的不同部分)。我想添加另一个列,根据其最大年龄对每棵树进行分类——最老cookie的最老年龄,在这种情况下,它将是两棵树中cookie A的最后一个年龄(因此,如果最大年龄<40,则将树分类为“年轻”,如果最大年龄>40和<120,则分类为“中年”,如果最大年龄>120,则分类为“老年”)。非常感谢您对此提出的任何建议

好的,下面是: 我使用了
dplyr
库来实现这一点,它为我提供了
%%>%%
操作符和
summary()
函数。我还将您的数据帧命名为
。然后:

library(dplyr)

trees2 <- trees %>%
  group_by(Tree = Tree) %>%
  summarise(Age = max(Age))

trees2$Cat <- ifelse(trees2$Age < 40, "young", ifelse(trees2$Age > 120, "old", "mid-age"))
trees$Category = trees2$Cat[match(trees$Tree, trees2$Tree)]
之后,使用cory中的建议,我将此tibble放在原始表中,最后一行:

trees$Category = trees2$Cat[match(trees$Tree, trees2$Tree)]
这给了我:

> trees
   Tree Cookie Age Category
1  C1T1      A  10    young
2  C1T1      A  20    young
3  C1T1      A  30    young
4  C1T1      B  15    young
5  C1T1      B  20    young
6  C1T1      B  25    young
7  C1T2      A  12      old
8  C1T2      A  20      old
9  C1T2      B   5      old
10 C1T2      B  13      old

使用
cut
的方法:

trees_max <- trees %>%
  group_by(Tree) %>%
  summarise(max_age = max(Age))

breaks <- c(0, 40, 120, Inf)
labels <- c("young", "mid-age", "old")

trees_max$cat <- cut(trees_max$max_age, breaks, labels)
trees\u max%
分组依据(树)%>%
总结(最大年龄=最大年龄)
打破
trees_max <- trees %>%
  group_by(Tree) %>%
  summarise(max_age = max(Age))

breaks <- c(0, 40, 120, Inf)
labels <- c("young", "mid-age", "old")

trees_max$cat <- cut(trees_max$max_age, breaks, labels)
> trees_max
# A tibble: 4 x 3
  Tree  max_age cat    
  <chr>   <dbl> <fct>  
1 C1T1       30 young  
2 C1T2       20 young  
3 C1T3       35 young  
4 C1T4       77 mid-age