这是一种tidyverse
不重新整形原始数据帧但通过列名模式将其拆分为组的方法,并使用coalesce
函数获取每个子数据帧中的最后一个非NA值:
library(tidyverse) df_foo %>% mutate_all(as.numeric) %>% split.default(f = sub("_\\d+$", "", names(.))) %>% map_df(~do.call(coalesce, setNames(rev(.), NULL))) # A tibble: 3 × 2 # column_set_1 column_set_2 ##1 3 13 #2 3 11 #3 3 9