How can I test the same categorical variable across two populations? I have data that looks a little something like this:
ID         Status
01         A
02         G
03         E
...        ...
100        G

You get the idea, I think. I have this data from two separate populations (cohorts) and I want to compare the distribution of the status variable in one population to the distribution in another. The question I'm answering is something like this: If you didn't know any better, could these be from the same population? I think this means I should perform a Person's chi squared, though I am not sure. I am also not sure on the methodology for transforming the variable in a way that allows you to run the test. (I'd especially like to know how to do this in R.)
 A: Let me (a) first explain the underlying idea rather than the mechanics - they become more obvious in retrospect. Then (b) I'll talk about the chi-square (and whether it's appropriate - it may not be!), and then (c) I'll talk about how to do it in R.
(a) Under the null, the populations are the same. Imagine you put your two cohorts into one large data set but add a column which holds the cohort labels. Then under the null, the cohort label is effectively just a random label which tells you nothing more about the distribution the observation came from. 
Under the alternative, of course, the cohort labels matter - knowing the cohort label tells you more than not knowing it because the distributions under the two labels are different.
(This immediately suggests some kind of permutation test/randomization test where a statistic - one sensitive to the alternative - computed on the sample is compared with the distribution of the same statistic with the cohort labels reassigned to the rows at random. If you did all possible reassignments its a permutation test, if you only sample them it's a randomization test.)
(b) So now, how to do a chi-square?
You compute expected values under the null. Since the cohort labels don't matter under the null, you compute the expected number in each cell based on the overall distribution:
                       Status
                 A   B   ...  E   ...  G ...      Total
  Cohort 1:     10  15       18                    84
  Cohort 2:      9   7       25                    78

  Total:        19  22   ... 43 ...               162

So if the distribution was the same, there'd be no association between cohort and status, and (conditional on the row totals as well as the column totals) the expected number in cell $(i,j)$ is row-total-i $\times$ column-total-j / overall-total
So you just get an ordinary chi-square test of independence.
HOWEVER!
If the status labels form an ordered category, this chi-square test is throwing away a lot of information - it will have low power against interesting alternatives (such as a slight shift toward higher or lower categories). You should in that situation do something more suitable - that is, which takes into account that ordering. There are many options.
--
(c) Now about how to do it in R - it depends on how your data are currently set up in R - it would really help to have a reproducible example like a subset of your data!
I will assume you have it in a data frame with two columns, one with the status (a factor) and one with the cohort (a second factor). 
Like so:
  status  cohort
1      B Cohort1
2      B Cohort1
3      D Cohort1
4      B Cohort1
5      C Cohort1
6      D Cohort1
. 
.
. 
25      G Cohort2
26      E Cohort2
27      E Cohort2
28      D Cohort2
29      C Cohort2
30      G Cohort2

Then if that was a data frame called statusresults you'd get a table like the one I did earlier with:
> with(statusresults,table(cohort,status))
         status
cohort    A B C D E F G
  Cohort1 2 6 7 3 0 0 0
  Cohort2 0 0 2 2 4 1 3

And for the chisquare test, you'd just go:
> with(statusresults, chisq.test(status, cohort))

    Pearson's Chi-squared test

data:  status and cohort 
X-squared = 18.5185, df = 6, p-value = 0.005059

Warning message:
In chisq.test(status, cohort) : Chi-squared approximation may be incorrect

(the warning is because the expected counts are low in some cells, given I used a very small sample)
If you have ordered categories for status you should say so, so that we can discuss other possibilities for the analysis than the plain chisquare.
A: You are right regarding the idea of doing a Chi-squared test. So here it is:
#Create two data sets (id, outcome and group label)
Dat1 <- as.data.frame(cbind(1:999,sample(c("A","G","E"),999,replace=T,prob=c(.2,.4,.4)),"group1"))
Dat2 <- as.data.frame(cbind(1:500,sample(c("A","G","E"),500,replace=T,prob=c(.4,.2,.4)),"group2"))

#Combine data sets
Dat  <- rbind(Dat1,Dat2)

#Receive descriptive statistics and compute Chi-Square
attach(Dat)
table(V3,V2)
chisq.test(table(V3,V2))
detach(Dat)

If it is correct you Chi-Square will be significant, hence there is a significant difference between the distributions of the two groups. For a reference to start with see:
http://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test
http://www.statmethods.net/stats/frequencies.html
A: You might be interested in this paper [1]. Excerpt from the abstract: 
The goal of the two-sample test (a.k.a. the homogeneity test) is, given two sets of samples, to judge whether the probability distributions behind the samples are the same or not. In this paper, we propose a novel non-parametric method of two-sample test based on a least-squares density ratio estimator. Through various experiments, we show that the proposed method overall produces smaller type-II error (i.e., the probability of judging the two distributions to be the same when they are actually different) than a state-of-the-art method, with slightly larger type-I error (i.e., the probability of judging the two distributions to be different when they are actually the same).
The authors also provide matlab code for the same [2].
[1] http://www.ms.k.u-tokyo.ac.jp/2011/LSTT.pdf 
[2] http://www.ms.k.u-tokyo.ac.jp/software.html#uLSIF
