从最后一列获取数据,每行包含数据

时间:2018-05-14 20:01:15

标签: r

我在电子表格中有不同的事件序列。行到行的事件数量不同。 我想获取每一行的最后一个元素,并将其放在每个元素的另一列中,如列#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而不是最后一个事件。

example of data

1 个答案:

答案 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)