gpt4 book ai didi

r - 对于每一行,返回非 NA 值的列索引和名称

转载 作者:行者123 更新时间:2023-12-05 08:57:15 27 4
gpt4 key购买 nike

我有一个数据框,其中每一行都包含一个非 NA 值。

ED1 ED2 ED3 ED4 ED5 
1 NA NA NA NA
NA NA 1 NA NA
NA 1 NA NA NA
NA NA NA NA 1

对于每一行,我想获取包含非 NA 值的列的索引和名称,即:

索引:c(1, 3, 2, 5),及其对应的列名:c("ED1""ED3""ED2""ED5")

最佳答案

这里不需要使用apply() 循环。您可以将 max.col() 与对 is.na() 的否定调用结合使用。

max.col(!is.na(df))
# [1] 1 3 2 5

这为我们提供了 1 所在的列号。要获取列名称,我们可以在数据框的 names() 的向量子集中使用它。

names(df)[max.col(!is.na(df))]
# [1] "ED1" "ED3" "ED2" "ED5"

所以我们可以得到想要的数据框,有因子列,通过做

data.frame(EDU = names(df)[max.col(!is.na(df))])
# EDU
# 1 ED1
# 2 ED3
# 3 ED2
# 4 ED5

数据:

df <- structure(list(ED1 = c(1, NA, NA, NA), ED2 = c(NA, NA, 1, NA), 
ED3 = c(NA, 1, NA, NA), ED4 = c(NA, NA, NA, NA), ED5 = c(NA,
NA, NA, 1)), .Names = c("ED1", "ED2", "ED3", "ED4", "ED5"
), row.names = c(NA, -4L), class = "data.frame")

关于r - 对于每一行,返回非 NA 值的列索引和名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34458054/

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