La Cordillera
La Cordillera

Reputation: 422

R: go through a sequence of numbers and choose the highest one

I am scrapping data from a website, and in this context, data tidying gets kind of hard.

what I have right now is a string of numbers that go into a sequence, let's say

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

The first value that I'm looking for is 3, the second one is 5, and the third one will be 4. So basically, I want to go through the sequence 1:5 and choose the highest value, to have the final output as

    a<-c(3,4,5)

I thought about choosing the maximum values, such as

    a<-sort(a, decreasing = T)
    a<-a[1:3]

But this won't count, cause the final product is:

    [1] 5 4 4

where the small values are discriminated. Any ideas if this could be possible?

Upvotes: 0

Views: 272

Answers (3)

Jake
Jake

Reputation: 113

Sounds like you want something like this?

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

Gives:

[1] 3 4 5

In one line:

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

Upvotes: 1

d.b
d.b

Reputation: 32548

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

Upvotes: 1

bringtheheat
bringtheheat

Reputation: 90

not entirely sure if this is what you're asking for. i think what you're wanting is to see which of your values you have in your vector.

try this:

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)

Upvotes: 2

Related Questions