gpt4 book ai didi

r - 根据前一列的结果在 R 中创建一个新列

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

我正在尝试根据之前的两列在表格中创建一个新列。我的两列包含逻辑变量,我希望我的新列是基于这些逻辑变量的列(因此,如果两列的答案均为假,那么它们属于第 1 组,如果它们在选项 1 中回答为假但在选项 2 中为真然后他们是第 2 组的一部分等)

我的数据表如下所示:

Choice1  Choice2 
TRUE FALSE
TRUE TRUE
FALSE FALSE
FALSE TRUE
TRUE TRUE

我想创建一个新列,其中将个人分为 4 组之一:1、2、3、4。

1=假的,假的

2=假真

3=真假

4=真真

所以上表的结果是 3,4,1,2,4

我最初尝试的代码开始看起来像我在下面所做的,但目前这不适用于代码。

df$newcolumn <- c("(df$Choice1=FALSE,df$Choice2=FALSE)"="1", "(df$Choice1=FALSE, df$Choice2=TRUE)"="2"), "(df$Choice1=TRUE, df$Choice2=FALSE)"="3", "(df$Choice1=TRUE, df$Choice2=TRUE)", ="4")

我也尝试在网上寻找其他合适的类似示例来尝试调整我的示例,但一直找不到。任何帮助将不胜感激

最佳答案

1) 线性公式 指定的公式将给出组数作为因子。在下面的评论中要求因子部分。

transform(dat1, group = factor(1 + 2*Choice1 + Choice2))
## Choice1 Choice2 group
## 1 TRUE FALSE 3
## 2 TRUE TRUE 4
## 3 FALSE FALSE 1
## 4 FALSE TRUE 2
## 5 TRUE TRUE 4

我们可以使用回归推导上述公式。为此,每个组合都必须在 dat1 中表示,但事实就是如此。

y <- c(3, 4, 1, 2, 4)
fm <- lm(y ~., dat1)
fm
##
## Call:
## lm(formula = y ~ ., data = dat1)
##
## Coefficients:
## (Intercept) Choice1TRUE Choice2TRUE
## 1 2 1

# check that it is exact, i.e. residual sum of squares is 0
deviance(fm)
## [1] 3.574526e-31

2) 显式组合另一种方法是显式考虑每个组合:

transform(dat1, group = factor(
1 * (!Choice1 & !Choice2) +
2 * (!Choice1 & Choice2) +
3 * (Choice1 & !Choice2) +
4 * (Choice1 & Choice2)))

给予:

  Choice1 Choice2 group
1 TRUE FALSE 3
2 TRUE TRUE 4
3 FALSE FALSE 1
4 FALSE TRUE 2
5 TRUE TRUE 4

3) 互动 第三种方法是使用互动来创建群体因素。

transform(dat1, group = factor(interaction(Choice2, Choice1), label = ""))

给予:

  Choice1 Choice2 group
1 TRUE FALSE 3
2 TRUE TRUE 4
3 FALSE FALSE 1
4 FALSE TRUE 2
5 TRUE TRUE 4

注意事项

可重现形式的输入是:

dat1 <- structure(list(Choice1 = c(TRUE, TRUE, FALSE, FALSE, TRUE), 
Choice2 = c(FALSE,
TRUE, FALSE, TRUE, TRUE)), class = "data.frame", row.names =
c(NA, -5L))

关于r - 根据前一列的结果在 R 中创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66660156/

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