gpt4 book ai didi

r - 比较 boolean 向量

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

我有一个包含四个逻辑向量的数据框, v1 , v2 , v3 , v4 是对还是错。我需要根据 boolean 向量的组合对数据帧的每一行进行分类(例如, "None" , "v1 only" , "v1 and v3" “全部” 等)。我想在不获取数据帧的子集或嵌套 ifelse 语句的情况下执行此操作。
有关执行此操作的最佳方法的任何建议?谢谢!

最佳答案

这是一种依赖于事实的方法 TRUE / FALSE可以表示为 0 和 1。您可以将 boolean 值乘以其列索引,然后将所有值粘贴在一起。这将告诉您哪些列的每行值为 1。下面是一个例子:

set.seed(1)
dat <- data.frame(v1 = sample(c(T,F), 10, TRUE),
v2 = sample(c(T,F), 10, TRUE),
v3 = sample(c(T,F), 10, TRUE),
v4 = sample(c(T,F), 10, TRUE)
)
#End fake data
#Multiple T/F times the column index
dat <- dat * rep(seq_len(ncol(dat)), each = nrow(dat))
#Paste together in a new column
dat$v5 <- apply(dat, 1, function(x) paste(x, collapse = ""))

> dat
v1 v2 v3 v4 v5
1 0 0 3 4 0034
2 0 2 0 4 0204
...

合并以下有用的评论和附加问题

我会使用 expand.grid() 创建一个查找表然后写下文本标签来代表它们,但是你认为合适。这是一个包含两列的示例:
set.seed(1)
dat <- data.frame(v1 = sample(c(T,F), 10, TRUE),
v2 = sample(c(T,F), 10, TRUE)
)

#Thanks @Joshua
dat$comp <- as.character(apply(1 * dat, 1, paste, collapse=""))

#Look up table
lookup <- data.frame(comp = apply(expand.grid(0:1, 0:1), 1, paste, collapse = ""),
text = c("none", "v1 only", "v2 only", "all"),
stringsAsFactors = FALSE
)

#Use merge to join the look up table to your data. Note the consistent naming of the comp column
> merge(dat, lookup)
comp v1 v2 text
1 00 FALSE FALSE none
2 00 FALSE FALSE none
3 01 FALSE TRUE v2 only
....

关于r - 比较 boolean 向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8498850/

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