Мне нужно выполнить некоторые операции в фрейме данных, и, поскольку они немного конкретны, я не знаю, как их выполнять. Вот некоторые данные:Выбор последовательных строк в кадре данных ... r
x<-seq(1:250)
pos<-seq(1000,1249,1)
pval<-c(rep(0.25,40),rep(0.0001,10),rep(0.14,100),rep(0.0005,20),rep(0.58,10),rep(0.00001,20),rep(0.85,50))
len<-rep(0.1,250)
nsnp<-rep(33.7,250)
data<-data.frame(cbind(x,pos,pval,len,nsnp))
Ну, так что моя проблема в том, что мне нужно создать фрейм данных из этого, но мне нужно, чтобы объединить последовательные строки в соответствии с данными $ ПВС. То есть сортировка по данным $ x Мне нужно объединить все последовательные элементы, которые имеют данные $ pval < = чем 0,05. И выполнить:
- Среднее значение данных $ поз между первым и последним подряд элемент с данными $ ПВС < = 0,05
- Сумма всех последовательных данных $ Len с данными $ ПВС < = 0,05
- Сложите все подряд данные $ nsnp с данными $ ПВС < = 0,05
Поскольку в нашем кадре данных (данных) есть 3 области с последовательными данными $ чисел х, окончательная база данных должна выглядеть следующим образом:
pos len nsnp
[1,] 1044.5 1 337
[2,] 1159.5 2 674
[3,] 1189.5 2 674
Эти цифры могут быть получены следующим образом:
data2<-subset(data,data$pval<=0.05)
mean(data2$pos[data2$pos>=1040 & data2$pos<=1049])
sum(data2$len[data2$pos>=1040 & data2$pos<=1049])
sum(data2$nsnp[data2$pos>=1040 & data2$pos<=1049])
mean(data2$pos[data2$pos>=1150 & data2$pos<=1169])
sum(data2$len[data2$pos>=1150 & data2$pos<=1169])
sum(data2$nsnp[data2$pos>=1150 & data2$pos<=1169])
mean(data2$pos[data2$pos>=1180 & data2$pos<=1199])
sum(data2$len[data2$pos>=1180 & data2$pos<=1199])
sum(data2$nsnp[data2$pos>=1180 & data2$pos<=1199])
Я надеюсь, что теперь моя проблема понята. Моя проблема в том, что я не мог найти, как выбрать последовательные строки в соответствии с данными $ x. Эти последовательные строки в моем примере: pos 1040-1049, pos 1150-1169 и pos 1180-1199.
Hi Cebs. Что вы пробовали? – Vincent
Для первой части я подмножество в соответствии с данными $ pval. Однако я не знаю, как начать получать операции последовательных строк. Спасибо – Cebs
Опять же, я не понимаю, почему мой вопрос является нисходящим ... Является идеальным законным вопросом, с примером и, я считаю, хорошо объяснил, пожалуйста, объясните мне, почему ... – Cebs