R - 将列添加到数据集,其中包含行值重复的次数

问题描述 投票:0回答:1

我一直在寻找如何在 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))
r dataset aggregate
1个回答
0
投票

使用

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
© www.soinside.com 2019 - 2024. All rights reserved.