r - 根据先前列的结果在 R 中创建一个新列
问题描述
我正在尝试根据前两列在表中创建一个新列。我的两列包含逻辑变量,我希望我的新列是基于这些逻辑变量的列(因此,如果两列中的答案都是错误的,那么它们是第 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)交互第三种方法是使用interaction
创建组因子。
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))
推荐阅读
- c# - 我有一个对象列表,但我找不到整理代码的方法。我正在尝试更新 C# 中特定索引处的对象
- android - 在我的 MainActivity 代码中更改微调器的大小
- python - PythonAnywhere 上 Flask 的日志记录格式
- android - Firebase - 获取所有孩子并添加到 ListView
- android - Visual Studio 2013 的目标 Android 版本中未显示已安装的 API 版本 28 (Pie)
- dictionary - TypeError:无法调用 null 的方法“getRange”。(第 25 行,文件“代码”)
- python-3.x - 从 np 数组创建 geoTiff gdal
- python - tf.placeholder(tf.random_normal([3,1]), name='weight') -> 错误
- jquery - 如何使用 jquery 在同一功能上使用 select 和 keyup 事件?
- php - Lumen MySQL`QueryException`错误:SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo失败:名称或服务未知