Новый фрейм данных из каждой n-й строки старых подмножеств фреймов данных

#r

Вопрос:

Я пытаюсь создать новый фрейм данных, выбрав каждую 7-ю строку из моего старого фрейма данных. В частности, мне нужна каждая 7-я строка из подмножеств «Primer», «E» и «R2».

Текущий (старый) фрейм данных выглядит следующим образом:

 print(total)
  Conc Primer   Ct1   Ct2   mean     slope          E        R2
1  1.00000    TBP 26.58 26.04 26.310 -1.588132  3.2625604 0.5994649
2  0.20000    TBP 28.46 28.32 28.390 -1.588132  3.2625604 0.5994649
3  0.04000    TBP 31.49 31.14 31.315 -1.588132  3.2625604 0.5994649
4  0.00800    TBP 33.90 32.18 33.040 -1.588132  3.2625604 0.5994649
5  0.00160    TBP 34.81 38.72 36.765 -1.588132  3.2625604 0.5994649
6  0.00032    TBP    NA    NA    NaN -1.588132  3.2625604 0.5994649
7  1.00000 EBF1_A 28.11 27.23 27.670 -0.791270 17.3565499 0.7927938
8  0.20000 EBF1_A 29.25 29.25 29.250 -0.791270 17.3565499 0.7927938
9  0.04000 EBF1_A 32.04 30.90 31.470 -0.791270 17.3565499 0.7927938
10 0.00800 EBF1_A 31.96 32.49 32.225 -0.791270 17.3565499 0.7927938
11 0.00160 EBF1_A 32.42 32.68 32.550 -0.791270 17.3565499 0.7927938
12 0.00032 EBF1_A    NA    NA    NaN -0.791270 17.3565499 0.7927938
13 1.00000 EBF1_B 27.80 27.72 27.760 -1.097899  7.1438682 0.7634541
14 0.20000 EBF1_B 29.17 29.45 29.310 -1.097899  7.1438682 0.7634541
15 0.04000 EBF1_B 31.89 32.07 31.980 -1.097899  7.1438682 0.7634541
16 0.00800 EBF1_B 32.76 32.76 32.760 -1.097899  7.1438682 0.7634541
17 0.00160 EBF1_B    NA    NA    NaN -1.097899  7.1438682 0.7634541
18 0.00032 EBF1_B    NA    NA    NaN -1.097899  7.1438682 0.7634541
19 1.00000 EBF2_A 29.28 29.50 29.390 -6.145888  0.4544889 0.6973744
20 0.20000 EBF2_A 31.69 30.70 31.195 -6.145888  0.4544889 0.6973744
21 0.04000 EBF2_A 34.00 34.75 34.375 -6.145888  0.4544889 0.6973744
22 0.00800 EBF2_A 35.24 35.20 35.220 -6.145888  0.4544889 0.6973744
23 0.00160 EBF2_A 36.04 38.33 37.185 -6.145888  0.4544889 0.6973744
24 0.00032 EBF2_A    NA    NA    NaN -6.145888  0.4544889 0.6973744
 

Я думал начать с изучения того, как извлечь каждый 7-й элемент из подмножества фреймов данных, прежде чем заняться идеей превратить его в фрейм данных. Моя идея состояла в том, чтобы использовать total[seq(1, nrow(total$Primer), 7), ] для печати 7-й элемент этого подмножества фреймов данных, но он просто возвращает Error in seq.default(1, nrow(total$Primer), 7) : 'to' must be of length 1

Есть какие-нибудь предложения?

Комментарии:

1. Что nrow(total$Primer) возвращается?

2. извлеките каждую 7-ю строку: total[c(rep(FALSE, 6), TRUE), ]

3. @dcarlson > print(total$Primer) [1] "TBP" "TBP" "TBP" "TBP" "TBP" "TBP" "EBF1_A" "EBF1_A" "EBF1_A" "EBF1_A" "EBF1_A" "EBF1_A" "EBF1_B" "EBF1_B" "EBF1_B" "EBF1_B" "EBF1_B" [18] "EBF1_B" "EBF2_A" "EBF2_A" "EBF2_A" "EBF2_A" "EBF2_A" "EBF2_A"

Ответ №1:

Вы можете определить последовательность кратных 7 :

 sequence <- seq(0, 700, by = 7)
 

и slice ваш фрейм данных по этой последовательности:

 library(dplyr)
df %>%
  slice(sequence)
 

Если вас интересует только нарезка определенных столбцов, select эти столбцы:

 df %>%
  slice(sequence) %>%
  select(c(Primer, E, R2))