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