gpt4 book ai didi

r - 如何使用 ifelse 添加新列

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

我是 R studio 的初学者。以下是数据。

<表类="s-表"><头>logic1logic2logic3<正文>真假假假假假真假假真真真真假假假真假真假假真假假假假真真假假真假假

我想在右侧添加一个新的数据列。如果 (logic1, logic2, logic3) 为 (TRUE, FALSE, FALSE),则添加 TRUE。如果不是,请添加 FALSE。为此,我编写了如下代码。

x <- c(df2$logic1, df2$logic2, df2$logic33)
y<- c(TRUE, FALSE, FALSE)
x1 <- ifelse(x %in% y, TRUE, FALSE)
df2$result <- x1

但是,Rstudio 结果如下所示。

Error in `$<-.data.frame`(`*tmp*`, result, value = c(TRUE, TRUE, TRUE, : 
replacement has 22 rows, data has 11

我在谷歌上尝试了各种方法,但找不到方法。

最佳答案

你可以做到——

df2 <- transform(df2, result = logic1 & !logic2 & !logic3)
df2

# logic1 logic2 logic3 result
#1 TRUE FALSE FALSE TRUE
#2 FALSE FALSE FALSE FALSE
#3 TRUE FALSE FALSE TRUE
#4 TRUE TRUE TRUE FALSE
#5 TRUE FALSE FALSE TRUE
#6 FALSE TRUE FALSE FALSE
#7 TRUE FALSE FALSE TRUE
#8 TRUE FALSE FALSE TRUE
#9 FALSE FALSE TRUE FALSE
#10 TRUE FALSE FALSE TRUE
#11 TRUE FALSE FALSE TRUE

如果您不想单独引用列(logic1logic2、...等)并且想使用 y可以更改或者是动态的,那么一种方法是使用 sweep

y <- c(TRUE, FALSE, FALSE)
df2$result <- rowSums(sweep(df2, 2, y, `==`)) == ncol(df2)

关于r - 如何使用 ifelse 添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71289801/

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