gpt4 book ai didi

r - 用另一个掩码数据框揭示一个数据框的值

转载 作者:行者123 更新时间:2023-12-01 10:33:10 25 4
gpt4 key购买 nike

假设我有两个数据框 AB_mask,其中

A <- as.data.frame( matrix(1:20,nrow=4) )

V1 V2 V3 V4 V5
1 1 5 9 13 17
2 2 6 10 14 18
3 3 7 11 15 19
4 4 8 12 16 20

还假设,

B_mask <- matrix(FALSE, nrow=4, ncol=5)
B_mask[2:3, 1:3] <- TRUE
B_mask <- as.data.frame(B_mask)

V1 V2 V3 V4 V5
1 FALSE FALSE FALSE FALSE FALSE
2 TRUE TRUE TRUE FALSE FALSE
3 TRUE TRUE TRUE FALSE FALSE
4 FALSE FALSE FALSE FALSE FALSE

如何获得这样的 result 数据框:

  • 如果 B_mask 中的条目等于 TRUE,则揭开 A 中的相应值?例如,因为 B_mask[2,1] = TRUE,我想要 result[2,1] = A[2,1] = 2

  • 如果 B_mask 中的条目等于 FALSE,则将 A 中的相应值覆盖为 NA?例如,因为 B_mask[3,4] = FALSE,我希望 result[3,4] = NA

谢谢!

最佳答案

我们创建数据集('res')的副本,将'B_mask'中的'FALSE'转换为NA,并使用逻辑索引对'A'的相应值进行子集化并将输出分配回'res ' 结构完整 ([])

res <- A
res[] <- as.matrix(A)[as.logical(NA^!B_mask)]

或者正如@alexis_laz 提到的,这也可以用

is.na(res) <- !as.matrix(B_mask)

关于r - 用另一个掩码数据框揭示一个数据框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39412241/

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