使用R整理数据
我在整理大型数据集时遇到问题,非常感谢您的帮助。我的数据的一个子集如下所示:使用R整理数据,r,dplyr,tidyr,mutate,R,Dplyr,Tidyr,Mutate,我在整理大型数据集时遇到问题,非常感谢您的帮助。我的数据的一个子集如下所示: > d1 # A tibble: 16 x 8 Subject RT1 RT2 item ROI `Item _Number` IA_LABEL block <dbl> <dbl> <dbl> <chr> <dbl> <dbl> <ch
> 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
该数据表示读取某些单词(IA_标签)后的反应时间(RT1和RT2)。在列(IA_标签)的每一行中,只有一个单词的反应时间(RT1和RT2)。因此,IA_标签中的这些单词代表短语的第一个单词(其中ROI=1)和同一短语的第二个单词(其中ROI=2)。我编写实验程序的方式只允许我单独看每个单词。我也在尝试查看整个短语的RT1和RT2(整个短语的RT1是RT1,其中ROI为1+RT1,其中ROI为2。通过将其值相加(其中ROI=1+其中ROI=2),可以对RT2应用相同的过程。我试图通过对因变量(RT1和RT2)的值求和来创建两列(变量) 因此,理想情况下,我希望有一个代码可以以类似于下面的方式变异两个变量,其中第一行
Sum\u RT1
=RT1
(其中ROI
=1)+RT2
下一行,其中ROI
=2。第二行Sum\u 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
>d2
#一个tibble:16 x 10
受试者RT1 RT2项目ROI`项目编号`IA\U标签区块总和\U RT1总和\U RT2
1 1567 261布里亚~1布里亚~3 1061 337
2 1 494 76布里尔~2 1推销员3 1061 337
3 1 441 211详细信息~1 2详细信息3 985 493
4 1 544 282详情2手册3 985 493
5 1 289 153详细信息~1 2详细信息4 430 294
6 1 141详情2手册4 430 294
71141141布里里亚~11044404231
8 1 263 90布里尔~2 1推销员4 404 231
9 2 216详情2 3 464 464
10 2 248 248详情2手册3 464 464
11 2 216 128布里亚~1 1布里亚~3 454 268
12 2 238 140布里尔~2 1推销员3 454 268
13 2 212详情6 581 453
14 2 369 241详情2手册6 581 453
15 2 208 208布里亚~1 1布里亚~6 399 399
16 2 191 191布里尔~2 1推销员6 399 399
我计划在一个更大的数据中对许多变量应用该过程,因此我将高度赞赏您的想法和帮助。按主题、项目编号和块对数据进行分组是否会得到所需的输出
colnames(d1)[6] <- "Item_Number" # delete the blank in the column name (otherwise it gives me an error...)
d2 <- d1 %>%
group_by(Subject,block, Item_Number) %>%
mutate(SumRT1 = sum(RT1),
SumRT2 = sum(RT2))
colnames(d1)[6]%
突变(SumRT1=sum(RT1),
SumRT2=总和(RT2))
输出:
# A tibble: 16 x 10
# Groups: Subject, block, Item_Number [8]
Subject RT1 RT2 item ROI Item_Number IA_LABEL block SumRT1 SumRT2
<dbl> <dbl> <dbl> <chr> <dbl> <dbl> <chr> <dbl> <dbl> <dbl>
1 1 567 261 brilliant salesman 1 1 brilliant 3 1061 337
2 1 494 76 brilliant salesman 2 1 salesman 3 1061 337
3 1 441 211 detailed brochure 1 2 detailed 3 985 493
4 1 544 282 detailed brochure 2 2 brochure 3 985 493
5 1 289 153 detailed brochure 1 2 detailed 4 430 294
6 1 141 141 detailed brochure 2 2 brochure 4 430 294
7 1 141 141 brilliant salesman 1 1 brilliant 4 404 231
8 1 263 90 brilliant salesman 2 1 salesman 4 404 231
9 2 216 216 detailed brochure 1 2 detailed 3 464 464
10 2 248 248 detailed brochure 2 2 brochure 3 464 464
11 2 216 128 brilliant salesman 1 1 brilliant 3 454 268
12 2 238 140 brilliant salesman 2 1 salesman 3 454 268
13 2 212 212 detailed brochure 1 2 detailed 6 581 453
14 2 369 241 detailed brochure 2 2 brochure 6 581 453
15 2 208 208 brilliant salesman 1 1 brilliant 6 399 399
16 2 191 191 brilliant salesman 2 1 salesman 6 399 399
#一个tible:16 x 10
#分组:受试者、区块、项目编号[8]
受试者RT1 RT2项目ROI项目编号IA标签块SumRT1 SumRT2
1567261才华横溢的推销员111061337
2 1 494 76杰出推销员2 1推销员3 1061 337
3 1 441 211详细手册1 2详细手册3 985 493
4 1 544 282详细手册2手册3 985 493
5 1 289 153详细手册1 2详细手册4 430 294
6 1 141 141详细手册2手册4 430 294
71141141才华横溢的推销员111404231
8 1 263 90杰出推销员2 1推销员4 404 231
9 2 216 216详细手册1 2详细手册3 464 464
10 2 248 248详细手册2手册3 464 464
11 2 216 128才华横溢的推销员1才华横溢的3454 268
12 2 238 140才华横溢的推销员2 1推销员3 454 268
13 2 212 2详细手册1 2详细手册6 581 453
14 2 369 241详细手册2 2手册6 581 453
15 2 208 208才华横溢的推销员1 1才华横溢的6 399 399
16 2 191 191杰出的推销员2 1推销员6 399 399
ROI是否始终为1或2,或者是否需要对更多行进行缩放?感谢您的评论@camille。是的,我将尝试确保所有行的ROI保持一致(其中1表示第一个单词,2表示第二个单词),我认为这实际上比看起来简单得多。按任何列分组(主题,项目),然后用类似于mutate\u at
的东西求和所需的变量。要放大,如果要对所有以“RT”开头的列求和,可以是mutate\u at(vars(以(“RT”)开头)
非常感谢您的建议和评论@camille.Brilliant!非常感谢@Em Laskey对您生成的如此快速高效的代码的帮助。因此,如果我错了,请纠正我,我需要应用group_by函数来包含任何会为每个项目编号生成不同RT值的变量,对吗?是的,这正是至少,我以为我会在这里工作!
# A tibble: 16 x 10
# Groups: Subject, block, Item_Number [8]
Subject RT1 RT2 item ROI Item_Number IA_LABEL block SumRT1 SumRT2
<dbl> <dbl> <dbl> <chr> <dbl> <dbl> <chr> <dbl> <dbl> <dbl>
1 1 567 261 brilliant salesman 1 1 brilliant 3 1061 337
2 1 494 76 brilliant salesman 2 1 salesman 3 1061 337
3 1 441 211 detailed brochure 1 2 detailed 3 985 493
4 1 544 282 detailed brochure 2 2 brochure 3 985 493
5 1 289 153 detailed brochure 1 2 detailed 4 430 294
6 1 141 141 detailed brochure 2 2 brochure 4 430 294
7 1 141 141 brilliant salesman 1 1 brilliant 4 404 231
8 1 263 90 brilliant salesman 2 1 salesman 4 404 231
9 2 216 216 detailed brochure 1 2 detailed 3 464 464
10 2 248 248 detailed brochure 2 2 brochure 3 464 464
11 2 216 128 brilliant salesman 1 1 brilliant 3 454 268
12 2 238 140 brilliant salesman 2 1 salesman 3 454 268
13 2 212 212 detailed brochure 1 2 detailed 6 581 453
14 2 369 241 detailed brochure 2 2 brochure 6 581 453
15 2 208 208 brilliant salesman 1 1 brilliant 6 399 399
16 2 191 191 brilliant salesman 2 1 salesman 6 399 399