【发布时间】:2020-02-13 13:38:34
【问题描述】:
我在整理大型数据集时遇到问题,非常感谢您的帮助。我的数据子集如下所示:
> d1
# A tibble: 16 x 8
Subject RT1 RT2 item ROI `Item _Number` IA_LABEL block
<dbl> <dbl> <dbl> <chr> <dbl> <dbl> <chr> <dbl>
1 1 567 261 brilliant salesman 1 1 brilliant 3
2 1 494 76 brilliant salesman 2 1 salesman 3
3 1 441 211 detailed brochure 1 2 detailed 3
4 1 544 282 detailed brochure 2 2 brochure 3
5 1 289 153 detailed brochure 1 2 detailed 4
6 1 141 141 detailed brochure 2 2 brochure 4
7 1 141 141 brilliant salesman 1 1 brilliant 4
8 1 263 90 brilliant salesman 2 1 salesman 4
9 2 216 216 detailed brochure 1 2 detailed 3
10 2 248 248 detailed brochure 2 2 brochure 3
11 2 216 128 brilliant salesman 1 1 brilliant 3
12 2 238 140 brilliant salesman 2 1 salesman 3
13 2 212 212 detailed brochure 1 2 detailed 6
14 2 369 241 detailed brochure 2 2 brochure 6
15 2 208 208 brilliant salesman 1 1 brilliant 6
16 2 191 191 brilliant salesman 2 1 salesman 6
dput (d1)
structure(list(Subject = c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
2, 2, 2, 2), RT1 = c(567, 494, 441, 544, 289, 141, 141, 263,
216, 248, 216, 238, 212, 369, 208, 191), RT2 = c(261, 76, 211,
282, 153, 141, 141, 90, 216, 248, 128, 140, 212, 241, 208, 191
), item = c("brilliant salesman", "brilliant salesman", "detailed brochure",
"detailed brochure", "detailed brochure", "detailed brochure",
"brilliant salesman", "brilliant salesman", "detailed brochure",
"detailed brochure", "brilliant salesman", "brilliant salesman",
"detailed brochure", "detailed brochure", "brilliant salesman",
"brilliant salesman"), ROI = c(1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 1, 2, 1, 2), `Item _Number` = c(1, 1, 2, 2, 2, 2, 1, 1,
2, 2, 1, 1, 2, 2, 1, 1), IA_LABEL = c("brilliant", "salesman",
"detailed", "brochure", "detailed", "brochure", "brilliant",
"salesman", "detailed", "brochure", "brilliant", "salesman",
"detailed", "brochure", "brilliant", "salesman"), block = c(3,
3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 6, 6, 6, 6)), row.names = c(NA,
-16L), class = c("tbl_df", "tbl", "data.frame"))
此数据表示读取某些单词(IA_Label)后的反应时间(RT1 和 RT2)。在列 (IA_LABEL) 的每一行中,只有一个单词的反应时间(RT1 和 RT2)。因此,IA_LABEL 中的这些词表示短语的第一个词(ROI=1)和同一短语的第二个词(ROI=2)。我编写这个实验的方式让我只能分别查看每个单词。我还尝试查看整个短语的 RT1 和 RT2(整个短语的 RT1 是 RT1,其中 ROI 为 1 + RT1,其中 ROI 为 2。通过将其值相加,可以将相同的过程应用于 RT2,其中 ROI =1 + 其中 ROI=2。
我试图通过对因变量(RT1 和 RT2)的值求和来创建两列(变量)。
所以,理想情况下,我希望有一个代码能够以类似于下面的方式改变两个变量,其中第一行 Sum_RT1 = RT1 该行(其中ROI=1) + RT2ROI=2 的后续行。 Sum_RT1 的第二行将是相同的值,因为将应用相同的求和过程,但方向相反(即,RT1,其中ROI 为 2 + RT1,其中ROI 为 2。
> d2
# A tibble: 16 x 10
Subject RT1 RT2 item ROI `Item _Number` IA_LABEL block Sum_RT1 Sum_RT2
<dbl> <dbl> <dbl> <chr> <dbl> <dbl> <chr> <dbl> <dbl> <dbl>
1 1 567 261 brill~ 1 1 brillia~ 3 1061 337
2 1 494 76 brill~ 2 1 salesman 3 1061 337
3 1 441 211 detai~ 1 2 detailed 3 985 493
4 1 544 282 detai~ 2 2 brochure 3 985 493
5 1 289 153 detai~ 1 2 detailed 4 430 294
6 1 141 141 detai~ 2 2 brochure 4 430 294
7 1 141 141 brill~ 1 1 brillia~ 4 404 231
8 1 263 90 brill~ 2 1 salesman 4 404 231
9 2 216 216 detai~ 1 2 detailed 3 464 464
10 2 248 248 detai~ 2 2 brochure 3 464 464
11 2 216 128 brill~ 1 1 brillia~ 3 454 268
12 2 238 140 brill~ 2 1 salesman 3 454 268
13 2 212 212 detai~ 1 2 detailed 6 581 453
14 2 369 241 detai~ 2 2 brochure 6 581 453
15 2 208 208 brill~ 1 1 brillia~ 6 399 399
16 2 191 191 brill~ 2 1 salesman 6 399 399
我计划在更大的数据中对许多变量应用该过程,因此非常感谢您的想法和帮助。
【问题讨论】:
-
ROI 是否总是只有 1 或 2,还是需要为更多行扩展?
-
感谢您的评论@camille。是的,我会尽量确保所有行的 ROI 保持一致(其中 1 代表第一个单词,2 代表第二个单词)
-
我认为这实际上比看起来要简单得多。按组成您的组的任何列(主题、项目)进行分组,然后将您需要的变量与
mutate_at之类的值相加。要按比例放大,如果要对所有以“RT”开头的列求和,可以是mutate_at(vars(starts_with("RT"))) -
非常感谢您的建议和评论@camille。