Strength of association test with binary variables I have a dataset with different purchases for two different items from the same users. So the users purchased the two items at different points in time. I also have 3 different variables: High, Mid, and Low twice (Low, Mid,High for each product) within this dataset. So the product are broken up into these categories. For example, suppose I bought item X and its classified as a High price item. I then want to see if the same user bought an item Y at the same classification level (High). My end goal is to see if there is an association of a customer buying items at the same classification level across different items.
My first thought was to use a Chi square test but I am not sure this is the best way to do it. 
I am doing this in R. All of the data are binary variables. Here is an example of what the dataset looks like.
User      Type             High  Mid  Low        
1         Product 1        0     1    0       
1         Product 2        1     0    0       
2         Product 1        0     1    0
2         Product 2        0     1    0
3         Product 1        0     0    1
3         Product 2        0     1    0

 A: Are you sure association is what you're trying to answer here? Is it possible that you might be interested in interrater agreement?
At any rate, there are two approaches to handling these data: one in which frequencies are treated as unordered (suboptimal) and the other in which you borrow information across trends (low/mid/high immediately suggests an ordinal nature to these data). The plain-vanilla approach to option 1 is to create a $3 \times 3$ contingency table of frequencies and conduct a Pearson $\chi^2$ test of independence with 4 degrees of freedom. The test statistic is the squared differences between observed and expected values based on marginal frequencies of tabular data. The R syntax would be chisq.test(table(dat$rate1, dat$rate2)).
Alternately, for approach number 2, there have been several methods proposed to analyze such data. A perfectly valid test of association for this circumstance is a simple linear regression model treating ordinal values as numeric quantities: 0:low, 1:mid, 2:high and regressing the rate2 variable upon rate1 (or vice versa, depending on the nature of the quesiton). R syntax would require casting these variables to numeric lm(as.numeric(rate2) ~ as.numeric(rate1)) ensuring that levels(rate1) == levels(rate2) and levels(rate1) == c('low', 'mid', 'high').
