我正在学习R,并且与tidry和dplyr碰到了障碍。
我在R中有一个数据框,其中第一列是一个因子,每隔一行只有一个级别。我正在尝试弄清楚如何使用tidyverse工具进行填充。
我试过使用填充和替换,但似乎都不起作用。
td <- data.frame("State" = c("NY", "", "OH", ""), "Your" = c(101:104), "Name" = c(5:8))
td
State Your Name
<fctr> <int> <int>
NY 101 5
102 6
OH 103 7
104 8
Run Code Online (Sandbox Code Playgroud)
我想要得到的是
State Your Name
<fctr> <int> <int>
NY 101 5
NY 102 6
OH 103 7
OH 104 8
Run Code Online (Sandbox Code Playgroud)
使用tidyr或dplyr
一种选择是,以取代空白(""
)与NA
(na_if
)和使用fill
从tidyr
之前它来填充与非NA相邻元件的NA元素
library(tidyverse)
td %>%
mutate(State = na_if(State, "")) %>%
fill(State)
# State Your Name
#1 NY 101 5
#2 NY 102 6
#3 OH 103 7
#4 OH 104 8
Run Code Online (Sandbox Code Playgroud)
或使用 base R
i1 <- td$State != ""
td$State <- with(td, State[i1][cumsum(i1)])
Run Code Online (Sandbox Code Playgroud)