R语言 计算具有相同ID的行数,并将该数字添加到新列中

mspsb9vt  于 2023-02-01  发布在  其他
关注(0)|答案(3)|浏览(231)

我的数据框包含有关政治生涯的数据,例如唯一标识符(称为:* ui )列,用于每个政治家和选举任期(称为: electric_term *)。由于一个政治家可以在多个选举任期内当选,因此有多个行包含相同的ui。
现在,我想在数据框中添加另一列,用于计算政治家再次当选的次数。

因此,例如,ui = 1的政治家连任了2次,因为他在3个选举任期中出现。
我已经试过了

df %>% count(ui)

但这只给出了一个表,不能添加到我的 Dataframe 。
先谢了!

ckocjqey

ckocjqey1#

我们可以使用base R

df$reelected <- with(df, ave(ui, ui, FUN = length)-1)
  • 输出
> df
  ui electoral reelected
1  1         1         2
2  1         2         2
3  1         3         2
4  2         2         0
5  3         7         1
6  3         9         1

数据

df <- structure(list(ui = c(1, 1, 1, 2, 3, 3), electoral = c(1, 2, 
3, 2, 7, 9)), class = "data.frame", row.names = c(NA, -6L))
pbossiut

pbossiut2#

mydf <- tibble::tribble(~ui, ~electoral, 1, 1, 1, 2, 1, 3, 2, 2, 3, 7, 3, 9)

library(dplyr)

df |> 
  add_count(ui, name = "re_elected") |> 
  mutate(re_elected = re_elected - 1)

# A tibble: 6 × 3
     ui electoral re_elected
  <dbl>     <dbl>      <dbl>
1     1         1          2
2     1         2          2
3     1         3          2
4     2         2          0
5     3         7          1
6     3         9          1
f5emj3cl

f5emj3cl3#

library(tidyverse)

df %>% 
  group_by(ui) %>% 
  mutate(re_elected = n() - 1)

# A tibble: 6 × 3
# Groups:   ui [3]
     ui electoral re_elected
  <dbl>     <dbl>      <dbl>
1     1         1          2
2     1         2          2
3     1         3          2
4     2         2          0
5     3         7          1
6     3         9          1

相关问题