我一直在寻找如何在 R 中执行此操作,但不幸的是没有找到简单的方法。
如果我有一个名为这样的人的数据集
A | B |
---|---|
约翰 | 学生 |
约翰 | 学生 |
约翰 | 学生 |
莎拉 | 学生 |
莎拉 | 学生 |
米奇 | 学生 |
我想在该数据集中添加一列,反映 A 列上的值重复的次数。例如这样的输出
A | B | C |
---|---|---|
约翰 | 学生 | 3 |
约翰 | 学生 | 3 |
约翰 | 学生 | 3 |
莎拉 | 学生 | 2 |
莎拉 | 学生 | 2 |
米奇 | 学生 | 1 |
请!非常欢迎任何帮助!
我尝试过以下代码但没有成功
people <-aggregate(people$A, people, lengths)
其输出是关于 people 的新列 x,但每行的所有值均为 1
可重复格式的数据
people <- structure(list(A = c("John", "John", "John", "Sarah", "Sarah",
"Mickey"), B = c("Student", "Student", "Student", "Student",
"Student", "Student")), class = "data.frame", row.names = c(NA,
-6L))
使用
ave
代替 aggregate
:
people$C <- as.numeric(ave(people$A, people$A, FUN = length))
people
#> A B C
#> 1 John Student 3
#> 2 John Student 3
#> 3 John Student 3
#> 4 Sarah Student 2
#> 5 Sarah Student 2
#> 6 Mickey Student 1
或在
n()
中使用
dplyr
library(dplyr)
people %>% mutate(C = n(), .by = A)
#> A B C
#> 1 John Student 3
#> 2 John Student 3
#> 3 John Student 3
#> 4 Sarah Student 2
#> 5 Sarah Student 2
#> 6 Mickey Student 1