R语言 将行的最后一个非NA值添加到新列[duplicate]

o8x7eapl  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(141)
    • 此问题在此处已有答案**:

Select last non-NA value in a row, by row(3个答案)
两年前关闭了。
我有一个 Dataframe ,看起来像这样:

column1 column2 column3
 NA       NA      NA
 0        NA      NA
 0        1       NA
 0        1       2

我想保留每行的最后一个非NA值并将其添加到新列中。
这将是所需的输出:

column4
  NA
  0
  1
  2
cygmwpex

cygmwpex1#

max.colties.method = "last"一起使用

df[cbind(1:nrow(df), max.col(!is.na(df), ties.method = "last"))]
#[1] NA  0  1  2

说明:
其逻辑是创建一个行/列索引,以将df中的值作为子集。
max.col返回最后一个非NA值所在的每行的列号。这是列索引。如果没有非NA值,则返回第一列号。

max.col(!is.na(df), ties.method = "last")
#[1] 3 1 2 3

我们使用1:nrow(df)cbind生成行索引,以创建用于 Dataframe 子集化的矩阵(df)。

qnzebej0

qnzebej02#

如果您的值按照示例增加,则可以使用pmax,即

do.call(pmax, c(df, na.rm = TRUE))
#[1] NA  0  1  2

相关问题