首页 > 解决方案 > 有没有办法从列中的最后一个非空白值中提取?

问题描述

我有一张包含操作列表的表格:

   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该列中最后一个非空值的值。我的目标是创建一个会话,以便我可以查看用户每次执行打开操作时的操作数。

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

标签: rdplyr

解决方案


假设空白是""

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) 

推荐阅读