Вот мой упрощенный df:
GP_A <- c(rep("a",3),rep("b",2),rep("c",2))
GP_B <- c(rep("d",2),rep("e",4),rep("f",1))
GENDER <- c(rep("M",4),rep("F",3))
LOC <- c(rep("HK",2),rep("UK",3),rep("JP",2))
SCORE <- c(50,70,80,20,30,80,90)
df <- as.data.frame(cbind(GP_A,GP_B,GENDER,LOC,SCORE))
> df
GP_A GP_B GENDER LOC SCORE
1 a d M HK 50
2 a d M HK 70
3 a e M UK 80
4 b e M UK 20
5 b e F UK 30
6 c e F JP 80
7 c f F JP 90
Я хочу суммировать счет по GP_A, GP_B или другим столбцам группировки, которые не показаны в этом примере. Поскольку число столбцов группировки может составлять до 50, я решил использовать for-l oop для суммирования баллов.
Оригинальный метод суммирует баллы с 1 группой по одному:
GP_A_SCORE <- df %>% group_by(GP_A,GENDER,LOC) %>% summarize(SCORE=mean(SCORE))
GP_B_SCORE <- df %>% group_by(GP_B,GENDER,LOC) %>% summarize(SCORE=mean(SCORE))
...
То, что я хочу, это использовать for-l oop следующим образом (невозможно запустить):
GP_list <- c("GP_A","GP_B",...)
LOC_list <- c("HK","UK","JP",...)
SCORE <- list()
for (i in GP_list){
for (j in LOC_list){
SCORE[[paste0(i,j)]] <- df %>% group_by(i,j,GENDER) %>% summarize(SCORE=mean(SCORE))
}}
Как и в «group_by ()», переменные классифицируются как символьные, и здесь отображаемая ошибка:
Ошибка: столбец I
, J
неизвестен
Есть ли способ заставить R распознать переменную?
Я сталкиваюсь с той же проблемой в left_join dplyr.
Ошибка отображается, когда я делал что-то вроде: left_join(x,y,by=c(i=i))
внутри al oop.