2017-11-07 6 views
0

私はウェブサイトからデータを取り除いています。この文脈では、データの整理は一種難しいものです。R:数字の列を通って最高のものを選ぶ

私が今持っていることのは、私が探している最初の値が3である

a<-c(1,2,3,1,2,3,4,5,1,2,3,4) 

を言わせて、シーケンスに入る数字の文字列で、二番目が5で、第三5と

a<-c(3,4,5) 

として最終的な出力を持って、最高値を選択し、私は、このような

として、最大値を選択することについて考えた:1だから、基本的に、私はシーケンスを1に行きたい4. になります
a<-sort(a, decreasing = T) 
    a<-a[1:3] 

しかし、これは、最終的な製品がある原因、カウントされません。小さい値を判別する

[1] 5 4 4 

を。もしこれが可能なのであれば、どんな考えですか?

+0

を私はあなたがここに求めているものを理解していません。数字を選択するルールは何ですか?秩序は問題ですか?多分もっと多くの例が助けになるでしょうか? – MrFlick

+1

"a"を "1"でグループ化したい場合は、 'tapply(a、cumsum(a == 1)、max)'を使用することができます。 –

+0

新しいシーケンスが1で始まると仮定すると、 'a [which(c(a、1)== 1) - 1L] 'となる。 – lmo

答えて

1
sort(unlist(lapply(split(a, cumsum(c(1, diff(a)) != 1)), max), use.names = FALSE)) 
#[1] 3 4 5 
+0

ありがとう!!これは正解です。私が必要とするものを正確に行います。 @ d.bどのようにあなたはそれに来たのですか?私は将来私がそれを使うことができるかもしれないことを理解したいと思います。 –

2

これがあなたが求めているのかどうかは完全にはわかりません。私はあなたが望んでいると思うのはあなたのベクトルの中にあなたが持っているものがどれかを見ることです。

はこれを試してください:あなたはこのような何かをしたいよう

a<-c(1,2,3,1,2,3,4,5,1,2,3,4) 
search_values = 3:5 

# unique values 
search_values = a[a %in% search_values] 
unique(search_values) 

# counts of values 
table(search_values) 
+0

ありがとうございます、しかし、それは私が必要としたもののためには機能しません。私はおそらく質問を定式化するとき自分自身をよりよく説明していたはずだったが、今解決されている。 –

+0

ああ、持っています。 @ d.bの答えをチェックアウト – bringtheheat

1

サウンズ?

a <- c(1,2,3,1,2,3,4,5,1,2,3,4) # Data input 

a <- unique(a) # Keep unique numbers 

a <- sort(a, dec = F) # Sort ascending 

tail(a, 3) # Last three numbers in set 

与える:1行で

[1] 3 4 5 

tail(sort(unique(a), dec = F), 3) 
+0

ありがとう、@ジェイク、それは私が欲しいもののために働かない... –

関連する問題