gpt4 book ai didi

r - 获取 R data.table 中一行中最后一个非 NA 值的位置

转载 作者:行者123 更新时间:2023-12-03 08:45:08 24 4
gpt4 key购买 nike

假设我有以下数据表,其中有四名学生以及他们对四个问题的答案:

library(data.table)
dt <- data.table(
student = 1:4,
q1 = c(1, 1, 1, NA),
q2 = c(2, 2, NA, NA),
q3 = c(3, NA, 3, NA),
q4 = c(4, NA, NA, NA)
)
# dt
# student q1 q2 q3 q4
# 1: 1 1 2 3 4
# 2: 2 1 2 NA NA
# 3: 3 1 NA 3 NA
# 4: 4 NA NA NA NA

什么是一种优雅的 r data.table 方法来获取每行中从右侧的第一个非 NA 值(但在问题列 q1 中) >q4)来获取下面的last_q_answered列?

#    student q1 q2 q3 q4 last_q_answered
# 1: 1 1 2 3 4 4
# 2: 2 1 2 NA NA 2
# 3: 3 1 NA 3 NA 3
# 4: 4 NA NA NA NA 0

最佳答案

我们可以使用max.col:

max.col(!is.na(dt[, -1]), ties.method = 'last') * +(rowSums(!is.na(dt[,-1])) > 0)
#[1] 4 2 3 0

关于r - 获取 R data.table 中一行中最后一个非 NA 值的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61790024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com