Я хочу создать переменную, которая включает все числа между (startyear) и (endyear - 1). Мои данные выглядят так:
страна | лидер | год начала | конец года |
---|---|---|---|
НАС | Эйзенхауэр | 1953 г. | 1961 г. |
НАС | Кеннеди | 1961 г. | 1963 г. |
Я хочу показать свои данные следующим образом:
страна | лидер | год начала | конец года | год |
---|---|---|---|---|
НАС | Эйзенхауэр | 1953 г. | 1961 г. | 1953 г. |
НАС | Эйзенхауэр | 1953 г. | 1961 г. | 1954 г. |
НАС | Эйзенхауэр | 1953 г. | 1961 г. | 1955 г. |
НАС | Эйзенхауэр | 1953 г. | 1961 г. | 1956 г. |
НАС | Эйзенхауэр | 1953 г. | 1961 г. | 1957 г. |
НАС | Эйзенхауэр | 1953 г. | 1961 г. | 1958 г. |
НАС | Эйзенхауэр | 1953 г. | 1961 г. | 1959 г. |
НАС | Эйзенхауэр | 1953 г. | 1961 г. | 1960 г. |
НАС | Кеннеди | 1961 г. | 1963 г. | 1961 г. |
НАС | Кеннеди | 1961 г. | 1963 г. | 1962 г. |
У меня много стран в наборе данных. Я хочу манипулировать всем набором данных с помощью кода "the".
Мы можем получить последовательность (:
) по строке и unnest
по list
столбцу
library(dplyr)
library(purrr)
library(tidyr)
df1 %>%
mutate(year = map2(startyear, endyear-1, `:`)) %>%
unnest(year)
-выход
# A tibble: 10 × 5
country leader startyear endyear year
<chr> <chr> <int> <int> <int>
1 US Eisenhower 1953 1961 1953
2 US Eisenhower 1953 1961 1954
3 US Eisenhower 1953 1961 1955
4 US Eisenhower 1953 1961 1956
5 US Eisenhower 1953 1961 1957
6 US Eisenhower 1953 1961 1958
7 US Eisenhower 1953 1961 1959
8 US Eisenhower 1953 1961 1960
9 US Kennedy 1961 1963 1961
10 US Kennedy 1961 1963 1962
df1 <- structure(list(country = c("US", "US"), leader = c("Eisenhower",
"Kennedy"), startyear = c(1953L, 1961L), endyear = c(1961L, 1963L
)), class = "data.frame", row.names = c(NA, -2L))