我在电子表格中有不同的事件序列。行到行的事件数量不同。 我想获取每一行的最后一个元素,并将其放在每个元素的另一列中,如列#34; Last"
ev1 ev2 ev3 ev4 Last
A A1 A2 A3 NA A3
B B1 B2 NA NA B2
C C1 C2 C3 C4 C4
D D1 D2 D3 NA D3
E E1 NA NA NA E1
如果每行中的任何事件是="已交付"我想展示Delivered而不是最后一个事件。
答案 0 :(得分:0)
您可以在整个data.frame上尝试dplyr::coalesce
。但是你必须改变列的顺序。 coalesce
从右到左折叠,但您需要最后一列(最右侧)。解决方案可能是:
library(dplyr)
df$Last <- coalesce(!!! df[ncol(df):1])
df
# ev1 ev2 ev3 ev4 Last
# A A1 A2 A3 <NA> A3
# B B1 B2 <NA> <NA> B2
# C C1 C2 C3 C4 C4
# D D1 D2 D3 <NA> D3
# E E1 <NA> <NA> <NA> E1
数据:强>
df <- read.table(text =
"ev1 ev2 ev3 ev4
A A1 A2 A3 NA
B B1 B2 NA NA
C C1 C2 C3 C4
D D1 D2 D3 NA
E E1 NA NA NA",
header = TRUE, stringsAsFactors = FALSE)