r - 相关数据的 R 模拟
问题描述
data = data.frame(GROUP = sample(1:4, size = 1000, r = TRUE),
SCORE = runif(1000),
帮助 = runif(1000, -.2, .8))
我有样本“数据”,其中包含变量 GROUP,表示个人所在的 GROUP,SCORE 是该个人的 SCORE,而 HELP 是另一种衡量标准。
现在,如果您知道如果 GROUP = 1 的 HELP 值大于 0.3,则其平均得分较高,但如果其 HELP 值小于 0.4,则 GROUP = 2 的平均得分较低,您如何模拟使用这些信息的数据集?
解决方案
这是一个简单的解决方案,用于针对相关条件dplyr
增加/减少SCORE
一个。sd
library(dplyr)
sd(data$SCORE)
#> [1] 0.2868018
data <-
data %>%
mutate(helpgt3 = as.integer(HELP > .3),
helplt4 = as.integer(HELP < .4))
original_means <-
data %>%
group_by(GROUP, helpgt3) %>%
summarise(mean.score = mean(SCORE))
data <-
data %>%
mutate(SCORE = case_when(
helpgt3 == 1 & GROUP == 1 ~ SCORE + 0.2868018,
helplt4 == 1 & GROUP == 2 ~ SCORE - 0.2868018,
TRUE ~ SCORE
))
new_means <-
data %>%
group_by(GROUP, helpgt3) %>%
summarise(mean.score = mean(SCORE))
#> `summarise()` regrouping output by 'GROUP' (override with `.groups` argument)
original_means
#> # A tibble: 8 x 3
#> # Groups: GROUP [4]
#> GROUP helpgt3 mean.score
#> <int> <int> <dbl>
#> 1 1 0 0.486
#> 2 1 1 0.474
#> 3 2 0 0.473
#> 4 2 1 0.525
#> 5 3 0 0.482
#> 6 3 1 0.486
#> 7 4 0 0.545
#> 8 4 1 0.521
new_means
#> # A tibble: 8 x 3
#> # Groups: GROUP [4]
#> GROUP helpgt3 mean.score
#> <int> <int> <dbl>
#> 1 1 0 0.486
#> 2 1 1 0.761
#> 3 2 0 0.186
#> 4 2 1 0.478
#> 5 3 0 0.482
#> 6 3 1 0.486
#> 7 4 0 0.545
#> 8 4 1 0.521
您的数据
set.seed(2020)
data = data.frame(GROUP = sample(1:4, size = 1000, r = TRUE),
SCORE = runif(1000),
HELP = runif(1000, -.2, .8))
推荐阅读
- elasticsearch - 为什么弹性搜索返回错误的相关性分数?
- c# - 获取运行时字段或属性名称未知的嵌套类的属性值
- python - 嵌套for循环的更多pythonic方式
- python - 从多维数组访问第一个子数组
- java - 如何在 JUnit 测试期间忽略“进程崩溃”
- c++ - C ++ QT如何从QMainWindow布局访问QWidget的公共类成员
- javascript - 如何创建多滤镜库
- python - 错误:[WinError 2]在python中使用distutils时系统找不到指定的文件
- python - 具有外键模型的 Django 高效查询集
- c# - 从 Datagridview 到 Excel - 它不保存我的数值