gpt4 book ai didi

r - 将变量的名称分配给具有多个变量的数据框中的非 NA

转载 作者:行者123 更新时间:2023-12-04 07:40:18 24 4
gpt4 key购买 nike

例如,我的 df 是:

         >dfABy 
A B C

56 NA NA
NA 45 NA
NA 77 NA
67 NA 12
NA 65 3
我想实现以下数据框
         >dfABy 
A B C

A NA NA
NA B NA
NA B NA
A NA C
NA B C

最佳答案

这是 base R 中的一个选项.将数据转换为逻辑矩阵,非 NA 为 TRUE,NA 为 FALSE。根据 col 复制列名um 指数 ('nm1')。根据索引 'i1' 为数据中的元素分配相应的列名

i1 <- !is.na(dfABy)
nm1 <- names(dfABy)[col(dfABy)]
dfABy[i1] <- nm1[i1]
-输出
dfABy
# A B C
#1 A <NA> <NA>
#2 <NA> B <NA>
#3 <NA> B <NA>
#4 A <NA> C
#5 <NA> B C

或者在一行中
dfABy[] <- names(dfABy)[col(dfABy)][(NA^is.na(dfABy)) * col(dfABy)]

或使用 tidyverse
library(dplyr)
dfABy %>%
mutate(across(everything(), ~ replace(., !is.na(.), cur_column())))
# A B C
#1 A <NA> <NA>
#2 <NA> B <NA>
#3 <NA> B <NA>
#4 A <NA> C
#5 <NA> B C
数据
dfABy <- structure(list(A = c(56L, NA, NA, 67L, NA), B = c(NA, 45L, 77L, 
NA, 65L), C = c(NA, NA, NA, 12L, 3L)), class = "data.frame", row.names = c(NA,
-5L))

关于r - 将变量的名称分配给具有多个变量的数据框中的非 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67511707/

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