【发布时间】:2021-06-09 16:45:23
【问题描述】:
我有一个涵盖 1945-2021 年的数据集和每十年的人口普查值(简化如下),我目前正在尝试使用 tidyr::fill 填充普查前后五年的每个人口普查值(例如,1991 年的人口普查应适用于 1986 - 1995 年)。但是,我的代码采用第一个人口普查值并向上和向下填充到下一个人口普查值,下一个人口普查值只会向下填充,依此类推。
dat_filled <- dat %>%
fill(value, .direction = "downup")
原始数据
#> year value
#> 1945 <NA>
#> 1946 A
#> 1947 <NA>
#> 1948 <NA>
#> 1949 <NA>
#> 1950 <NA>
#> 1951 <NA>
#> 1952 <NA>
#> 1953 <NA>
#> 1954 <NA>
#> 1955 <NA>
#> 1956 B
#> 1957 <NA>
#> 1958 <NA>
#> 1959 <NA>
#> 1960 <NA>
#> 1961 <NA>
#> 1962 C
#> 1963 <NA>
#> 1964 <NA>
我目前得到的(第一个值 A,一直到 B 的第一次出现,然后 C 也是如此)
#> year value
#> 1945 A
#> 1946 A
#> 1947 A
#> 1948 A
#> 1949 A
#> 1950 A
#> 1951 A
#> 1952 A
#> 1953 A
#> 1954 A
#> 1955 A
#> 1956 B
#> 1957 B
#> 1958 B
#> 1959 B
#> 1960 B
#> 1961 B
#> 1962 C
#> 1963 C
#> 1964 C
我想要的(A 做一个“updown”,然后是 B,然后是 C,然后重复直到所有 NA 都被填满)
#> year value
#> 1945 A
#> 1946 A
#> 1947 A
#> 1948 A
#> 1949 A
#> 1950 A
#> 1951 A
#> 1952 B
#> 1953 B
#> 1954 B
#> 1955 B
#> 1956 B
#> 1957 B
#> 1958 B
#> 1959 B
#> 1960 C
#> 1961 C
#> 1962 C
#> 1963 C
#> 1964 C
我的实际数据比这稍微复杂一些,但这只是由于一个 group_by 函数。
【问题讨论】: