gpt4 book ai didi

r - 将第一个非缺失值存储在新列中

转载 作者:行者123 更新时间:2023-12-02 09:10:56 26 4
gpt4 key购买 nike

再见,我有几列代表分数。对于每个学生,我想获取第一个非 NA 分数并将其存储在名为 TEST 的新列中。

这是我的复制示例。这是我现在拥有的数据:

df <- data.frame(STUDENT=c(1,2,3,4,5), 
CLASS=c(90,91,92,93,95),
SCORE1=c(10,NA,NA,NA,NA),
SCORE2=c(2,NA,8,NA,NA),
SCORE3=c(9,6,6,NA,NA),
SCORE4=c(NA,7,5,1,9),
ROOM=c(01,02, 03, 04, 05))

这是我要添加的专栏:

df$FIRST <- c(10,6,8,1,9)

这是我的尝试:

df$FIRSTGUESS <- max.col(!is.na(df[3:6]), "first")

最佳答案

这正是包 dplyr 中的 coalesce 所做的。如其文档中所述:

Given a set of vectors, coalesce() finds the first non-missing value at each position.

因此,你可以简化做:

library(dplyr)
df$FIRST <- do.call(coalesce, df[grepl('SCORE', names(df))])

这是结果:

> df
STUDENT CLASS SCORE1 SCORE2 SCORE3 SCORE4 ROOM FIRST
1 1 90 10 2 9 NA 1 10
2 2 91 NA NA 6 7 2 6
3 3 92 NA 8 6 5 3 8
4 4 93 NA NA NA 1 4 1
5 5 95 NA NA NA 9 5 9

关于r - 将第一个非缺失值存储在新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52305386/

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