Xu 2021. Brand/Product Positioning & Perceptual Mapping. RPubs.com/utjimmyx/brand_positioning
This analysis uses principal component analysis to create perceptual maps showing how consumers evaluate grocery stores based on several service attributes.
Both datasets were uploaded to RStudio Cloud:
The first dataset represents consumers with a college degree, while the second dataset represents consumers without a college degree.
attributes <- c(
"Yelp",
"Value",
"Convenience",
"Assortment",
"Service",
"Delivery_ser",
"Smart_Apps"
)
read_grocery_data <- function(file_name) {
data <- read.csv(
file_name,
header = FALSE,
stringsAsFactors = FALSE,
check.names = FALSE,
fill = TRUE
)
# Remove the original header row
data <- data[-1, , drop = FALSE]
# Assign correct column names
names(data) <- c("Store", attributes)
# Convert perception variables to numeric values
data[attributes] <- lapply(
data[attributes],
function(x) as.numeric(as.character(x))
)
return(data)
}
group1 <- read_grocery_data("Bakersfield_Grocery1.csv")
group2 <- read_grocery_data("Bakersfield_Grocery2.csv")
group1
## Store Yelp Value Convenience Assortment Service Delivery_ser
## 2 Trader Joe's 4.5 4.0 3.0 3 5 3
## 3 Carniceria La Carreta 4.0 2.0 4.0 4 5 3
## 4 Sprouts 4.0 3.0 3.0 3 5 4
## 5 Albertson's 3.0 2.0 5.0 3 4 4
## 6 FoodMaxx 2.0 3.0 3.0 3 4 3
## 7 Vallarta 3.0 3.0 3.0 4 5 3
## 8 Aldi 3.5 4.0 3.0 3 5 5
## 9 Winco 4.0 5.0 5.0 5 5 4
## 10 Walmart 2.5 4.5 4.5 5 4 5
## Smart_Apps
## 2 4
## 3 0
## 4 4
## 5 4
## 6 3
## 7 0
## 8 0
## 9 4
## 10 4
group2
## Store Yelp Value Convenience Assortment Service Delivery_ser
## 2 Trader Joe's 4 2.0 3.0 3 4 2
## 3 Carniceria La Carreta 5 5.0 5.0 4 5 2
## 4 Sprouts 4 3.0 3.0 3 3 3
## 5 Albertson's 3 2.0 5.0 3 4 4
## 6 FoodMaxx 4 3.0 3.0 3 4 3
## 7 Vallarta 5 5.0 5.0 4 5 3
## 8 Aldi 4 4.0 3.0 3 5 5
## 9 Winco 5 5.0 5.0 5 5 4
## 10 Walmart 4 4.5 4.5 5 4 5
## Smart_Apps
## 2 2
## 3 0
## 4 2
## 5 3
## 6 3
## 7 0
## 8 0
## 9 3
## 10 4
group1_means <- colMeans(group1[attributes], na.rm = TRUE)
group2_means <- colMeans(group2[attributes], na.rm = TRUE)
comparison <- data.frame(
Attribute = attributes,
College_Degree_Group = round(group1_means, 2),
No_College_Degree_Group = round(group2_means, 2)
)
comparison$Difference <- round(
comparison$No_College_Degree_Group -
comparison$College_Degree_Group,
2
)
comparison
## Attribute College_Degree_Group No_College_Degree_Group
## Yelp Yelp 3.39 4.22
## Value Value 3.39 3.72
## Convenience Convenience 3.72 4.06
## Assortment Assortment 3.67 3.67
## Service Service 4.67 4.33
## Delivery_ser Delivery_ser 3.78 3.44
## Smart_Apps Smart_Apps 2.56 1.89
## Difference
## Yelp 0.83
## Value 0.33
## Convenience 0.34
## Assortment 0.00
## Service -0.34
## Delivery_ser -0.34
## Smart_Apps -0.67
pca1 <- prcomp(
group1[attributes],
center = TRUE,
scale. = TRUE
)
summary(pca1)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 1.5609 1.3596 0.9975 0.9758 0.79712 0.31373 0.18494
## Proportion of Variance 0.3481 0.2641 0.1421 0.1360 0.09077 0.01406 0.00489
## Cumulative Proportion 0.3481 0.6121 0.7543 0.8903 0.98105 0.99511 1.00000
scores1 <- as.data.frame(pca1$x[, 1:2])
scores1$Store <- group1$Store
ggplot(scores1, aes(x = PC1, y = PC2, label = Store)) +
geom_point(color = "steelblue", size = 3) +
geom_text(
aes(label = Store),
vjust = -0.8,
size = 3
) +
labs(
title = "Perceptual Map: Consumers with a College Degree",
x = "Principal Component 1",
y = "Principal Component 2"
) +
theme_minimal()
biplot(
pca1,
scale = 0,
cex = 0.7,
main = "PCA Biplot: Consumers with a College Degree"
)
pca2 <- prcomp(
group2[attributes],
center = TRUE,
scale. = TRUE
)
summary(pca2)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 1.8707 1.3224 0.9390 0.76890 0.47239 0.18816 0.1426
## Proportion of Variance 0.4999 0.2498 0.1260 0.08446 0.03188 0.00506 0.0029
## Cumulative Proportion 0.4999 0.7497 0.8757 0.96016 0.99204 0.99710 1.0000
scores2 <- as.data.frame(pca2$x[, 1:2])
scores2$Store <- group2$Store
ggplot(scores2, aes(x = PC1, y = PC2, label = Store)) +
geom_point(color = "darkorange", size = 3) +
geom_text(
aes(label = Store),
vjust = -0.8,
size = 3
) +
labs(
title = "Perceptual Map: Consumers without a College Degree",
x = "Principal Component 1",
y = "Principal Component 2"
) +
theme_minimal()
biplot(
pca2,
scale = 0,
cex = 0.7,
main = "PCA Biplot: Consumers without a College Degree"
)
Consumers with a college degree rated grocery stores higher in service, delivery services, and smart-app capabilities. Their average ratings were approximately 4.67 for service, 3.78 for delivery services, and 2.56 for smart apps.
Consumers without a college degree rated Yelp more positively, with an average rating of approximately 4.22 compared with 3.39 for consumers with a college degree. They also rated value and convenience slightly higher but rated service, delivery services, and smart apps lower.
Overall, the results suggest that consumers with a college degree place more importance on service and technology-related features. Consumers without a college degree appear to focus more on online reputation, value, and convenience. Walmart and WinCo were generally positioned as strong competitors because of their convenience, assortment, and technology-related characteristics.
The first two principal components summarize approximately 61% of the variation for the college-degree group and approximately 75% for the no-college-degree group. Therefore, the perceptual maps provide a useful summary of the data, but the original ratings should also be considered when making marketing decisions.
Other useful variables could include store cleanliness, product quality and freshness, price competitiveness, employee friendliness, checkout speed, parking availability, store location, loyalty-program benefits, online ordering, availability of culturally specific products, overall customer satisfaction, shopping frequency, age, income, and household size. These variables could help explain why different consumers perceive the same grocery stores differently and would provide managers with more detailed information for developing targeted marketing strategies.
A Walmart manager should continue emphasizing convenience, product assortment, delivery, and mobile-app services because Walmart is strongly associated with these features. However, the manager should also improve Yelp ratings by responding to customer reviews, resolving complaints, and encouraging satisfied customers to leave positive feedback.
Walmart could also promote online ordering, delivery discounts, loyalty rewards, and personalized app coupons. Since the two consumer groups value different attributes, Walmart should use targeted marketing strategies. Technology-based promotions could be directed toward consumers with a college degree, while value discounts, convenience messages, and review-based promotions could be directed toward consumers without a college degree.
I would improve the survey by adding questions about store cleanliness, product freshness, employee friendliness, checkout speed, parking, loyalty programs, online ordering, and customer satisfaction. I would also include demographic questions such as age, income, household size, and shopping frequency. These additions would make it easier to identify specific customer segments and develop more effective marketing strategies.
I selected “6 Reasons to Learn R for Business.” The article explains that R combines statistics, visualization, reporting, and machine learning in one affordable tool. This is relevant to marketing because R can help professionals understand customers, create reproducible reports, and communicate data-driven recommendations more effectively to managers.