更改主题中的重复值:R

Changing Duplicate Values Within Subjects: R

我的数据是这样的:

Country GDP Year
A 10 1972
A 15 1973
A 20 1973
A 18 1975
B 25 1950
B 30 1951
B 35 1951
B 36 1953

我有很多观察结果看起来像我上面提供的数据。我想改变重复的年份。但是,我想更改年份变量的第一个重复行。我想这样查看我的数据:

Country GDP Year
A 10 1972
A 20 1973
A 15 1974
A 18 1975
B 25 1950
B 35 1951
B 30 1952
B 36 1953

感谢您的宝贵时间!

这个怎么样?

library(dplyr)

df %>%
  arrange(Country, Year) %>%
  group_by(Country) %>%
  mutate(Year = min(Year) + row_number() - 1) %>%
  ungroup

#  Country   GDP  Year
#  <chr>   <int> <dbl>
#1 A          10  1972
#2 A          15  1973
#3 A          20  1974
#4 A          18  1975
#5 B          25  1950
#6 B          30  1951
#7 B          35  1952
#8 B          36  1953

从每个 Country 中的最小值开始,每个 Year 递增 1。

这是 tidyverse 的一个可能选项:

library(tidyverse)

df %>% 
  group_by(Country, Year) %>%
  mutate(dup = case_when(n() == 1 ~ FALSE,
                         min(GDP) == GDP ~ TRUE,
                         TRUE ~ FALSE)) %>% 
  mutate(Year = ifelse(dup == TRUE, Year + 1, Year)) %>% 
  arrange(Country, Year) %>% 
  ungroup %>% 
  select(-dup)

输出

  Country   GDP  Year
  <chr>   <int> <dbl>
1 A          10  1972
2 A          20  1973
3 A          15  1974
4 A          18  1975
5 B          25  1950
6 B          35  1951
7 B          30  1952
8 B          36  1953