user3433746
user3433746

Reputation: 3

R: How to use intervals as input data for histograms?

I would like to import the data into R as intervals, then I would like to count all the numbers falling within these intervals and draw a histogram from this counts.

Example:

start end freq
1 8 3
5 10 2
7 11 5
.
.
.

Result:

number freq
1 3
2 3
3 3
4 3
5 5
6 5
7 10
8 10
9 7
10 7
11 5

Some suggestions?

Thank you very much!

Upvotes: 0

Views: 106

Answers (1)

BrodieG
BrodieG

Reputation: 52637

Assuming your data is in df, you can create a data set that has each number in the range repeated by freq. Once you have that it's trivial to use the summarizing functions in R. This is a little roundabout, but a lot easier than explicitly computing the sum of the overlaps (though that isn't that hard either).

dat <- unlist(apply(df, 1, function(x) rep(x[[1]]:x[[2]], x[[3]])))
hist(dat, breaks=0:max(df$end))

enter image description here

You can also do table(dat)

 dat
 1  2  3  4  5  6  7  8  9 10 11 
 3  3  3  3  5  5 10 10  7  7  5 

Upvotes: 1

Related Questions