问题
After applying hexbin'ning I would like to know which id or rownumbers of the original data ended up in which bin.
I am currently analysing spatial data and I am binning, e.g., depth of water and temperature. Ideally, I would like to map the colormap of the bins back to the spatial map to see where more or less common parameter combinations exist. I'm not bound to hexbin
though.
I wasn't able to figure out from the documentation, how to trace which datapoint ends up in which bin. It seems hexbin()
only stores counts.
Is there a function that generates a list with one entry for every bin, each containing a vector of all rownumbers that were assigned to that bin?
Please point me into the right direction.
Up to now, I use plain hexbin to do the binning:
library(hexbin)
set.seed(5)
df <- data.frame(depth=runif(1000,min=0,max=100),temp=runif(1000,min=4,max=14))
h <- hexbin(df)
but currently I see no way to extract rownames of df from h that link the bins to df. Possibly there is no such thing, maybe I overlooked it or there is a completely different approach needed.
回答1:
Assuming you are using the hexbin
package, then you will need to set IDs=TRUE
to be able to go back to the original rows
library(hexbin)
set.seed(5)
df <- data.frame(depth=runif(1000,min=0,max=100),temp=runif(1000,min=4,max=14))
h<-hexbin(df, IDs=TRUE)
Then to get the bin number for each observation, you can use
h@cID
To get the count of observations in the cell populated by a particular observation, you would do
h@count[match(h@cID, h@cell)]
The idea is that the second observation df[2,]
is in cell h@cID[2]=424
. Cell 424 is at index which(h@cell==424)=241
in the list of cells (zero count cells appear to be omitted). The number of observations in that cell is h@count[241]=2
.
来源:https://stackoverflow.com/questions/27155373/hexbin-how-to-trace-bin-contents