有没有办法从列中的最后一个非空白值中提取?

时间:2019-08-27 16:04:49

标签: r dplyr

我有一张带有动作列表的表:

   name         person         timestamp           open_count               
 Opened            A      2019-07-01 00:00:34      1
 Action            A      2019-07-01 00:00:34      
 Action            A      2019-07-01 00:00:34      
 Opened            A      2019-07-02 00:00:34      2
 Action            A      2019-07-01 00:00:34      
 Action            A      2019-07-01 00:00:34      
 Opened            A      2019-07-08 00:00:34      3
 Action            A      2019-07-01 00:00:34      
 Action            A      2019-07-01 00:00:34      
 Action            A      2019-07-01 00:00:34      
 Opened            A      2019-07-11 00:00:34      4

我想将open_count的值填写到该列中的最后一个非空值。我的目标是创建一个会话,以便我可以查看用户每次执行打开操作时的操作数量。

如何填写最后一个非空值?您可以想象时间戳按升序排列。

1 个答案:

答案 0 :(得分:2)

假设空白为""

df1[tail(which(colSums(df1 != "") == nrow(df1)), 1)]

或者如果是NA

df1[tail(which(colSums(!is.na(df1)) == nrow(df1)), 1)]

如果我们需要fill'open_count'

library(dplyr)
library(tidyr)
df1 %>%
   mutate(open_count = na_if(open_count, "")) %>% 
   fill(open_count)