You can convert a character vector to numeric values by going via factor. Then each unique value gets a unique integer code. In this example, there’s four values so the numbers are 1 to 4, in alphabetical order, I think:
> d = data.frame(country=c("foo","bar","baz","qux"),x=runif(4),y=runif(4))
> d
country x y
1 foo 0.84435112 0.7022875
2 bar 0.01343424 0.5019794
3 baz 0.09815888 0.5832612
4 qux 0.18397525 0.8049514
> d$country = as.numeric(as.factor(d$country))
> d
country x y
1 3 0.84435112 0.7022875
2 1 0.01343424 0.5019794
3 2 0.09815888 0.5832612
4 4 0.18397525 0.8049514
You can then run prcomp:
> prcomp(d)
Standard deviations:
[1] 1.308665216 0.339983614 0.009141194
Rotation:
PC1 PC2 PC3
country -0.9858920 0.132948161 -0.101694168
x -0.1331795 -0.991081523 -0.004541179
y -0.1013910 0.009066471 0.994805345
Whether this makes sense for your application is up to you. Maybe you just want to drop the first column: prcomp(d[,-1]) and work with the numeric data, which seems to be what the other “answers” are trying to achieve.