R:返回数据帧的每一行中的第一个元素和位置

Cin*_*i18 5 r na

我有一个像这样的数据框:

Keyword   1    2    3    4    5
a        0.7  NA   NA   0.3  0.4
b         NA  NA   0.5   NA   NA
c         NA 0.2   NA    NA  0.3
d         NA  NA   NA   0.3  0.4
Run Code Online (Sandbox Code Playgroud)

我想得到它,结果给了我这个:

Keyword  First   Value
a          1      0.7 
b          3      0.5
c          2      0.2
d          4      0.3
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

谢谢.


解决方案创造了奇迹.

如果我想要最后一个值,结果如下所示:

Keyword  Last    Value
a          5      0.4
b          3      0.5
c          5      0.3
d          5      0.4
Run Code Online (Sandbox Code Playgroud)

我不知道要改变哪个索引.

谢谢.

Rol*_*and 3

DF <- read.table(text="Keyword   1    2    3    4    5
a        0.7  NA   NA   0.3  0.4
b         NA  NA   0.5   NA   NA
c         NA 0.2   NA    NA  0.3
d         NA  NA   NA   0.3  0.4
e         NA  NA   NA   NA   NA", header=TRUE)

setNames(
  data.frame(DF[,1],
             t(apply(DF[-1], 1, function(x) {
               ind <- which(!is.na((x)))[1]
               c(ind, x[ind])
             }))
  ), c("Keyword",  "First",   "Value"))
#  Keyword First Value
#1       a     1   0.7
#2       b     3   0.5
#3       c     2   0.2
#4       d     4   0.3
#5       e    NA    NA
Run Code Online (Sandbox Code Playgroud)