Убирать данные с помощью R - PullRequest
0 голосов
/ 13 февраля 2020

У меня проблема с уборкой большого набора данных, который был бы очень признателен за вашу помощь. Подмножество моих данных будет выглядеть так:

> 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"))

Эти данные представляют время реакции (RT1 и RT2) при чтении некоторых слов (IA_Label). В каждой строке столбца (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) + RT2 следующей строки, где ROI = 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

Я планирую применить этот процесс ко многим переменным для больших данных, поэтому буду очень признателен за ваши мысли и помощь.

1 Ответ

1 голос
/ 13 февраля 2020

Будет ли группировка данных по теме, номеру элемента и блоку давать желаемый результат?

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))

Выход:

# 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
...