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

标签 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

我想得到它,以便结果给我这个:
Keyword  First   Value
a          1      0.7 
b          3      0.5
c          2      0.2
d          4      0.3

我该怎么做?

谢谢。

解决方案创造了奇迹。

如果我想要最后一个值以便结果如下所示怎么办:
Keyword  Last    Value
a          5      0.4
b          3      0.5
c          5      0.3
d          5      0.4

我不知道要更改哪个索引。

谢谢。

最佳答案

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

关于R:返回数据帧每一行的第一个元素和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26616226/

相关文章:

r - 无法解决 Kaggle 内核中发生的 In h2o 错误

r - 将字符月份名称转换为日期时间对象

r - 将字符包名称传递给帮助函数

从 0.5 向上舍入

r - 根据 x 和 y 值分配点颜色

r - 如何在不丢失 NA 行的情况下对 R 中的数据进行子集化?

r - ifelse 和 POSIXct : coercion and default class of NA

Python:查找 NA 值高于阈值的列的名称

r - 在 R 中的数据框中将 NA 转换为数字的问题

r - 为什么Ifelse无法取代NA?