更改主题中的重复值: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
我的数据是这样的:
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