Мне кажется, я наконец получил ответ на свой вопрос выше! Этот ответ преодолевает проблему «не векторизации», как упомянуто @Roland, спасибо, сэр! И это, на мой взгляд, намного быстрее, хотя мне потребовалось буквально пару недель, чтобы понять концепцию и найти правильные вопросы в Интернете!
Во-первых, я создаю новую таблицу данных, состоящую из 2 столбцы, один с оригинальным именем, а второй - имя школы.
lookUpStratum <- data.table(STRATUM=c("MYS - stratum 01: MOE National Secondary School\\Other States",
"MYS - stratum 02: MOE Religious School\\Other States",
"MYS - stratum 03: MOE Technical School\\Other States",
"MYS - stratum 04: MOE Fully Residential School",
"MYS - stratum 05: non-MOE MARA Junior Science College\\Other States",
"MYS - stratum 06: non-MOE Other Schools\\Other States",
"MYS - stratum 07: Perlis non-“MOE Fully Residential Schools”",
"MYS - stratum 08: Wilayah Persekutuan Putrajaya non-“MOE Fully Residential Schools”",
"MYS - stratum 09: Wilayah Persekutuan Labuan non-“MOE Fully Residential Schools”"),
SCH.TYPE=c("Public",
"Religious",
"Technical",
"SBP",
"MARA",
"Private",
"Perlis Fully Residential",
"Putrajaya Fully Residential",
"Labuan Fully Residential"))
Ответ лежит на setDT
(Привести списки и data.frames к data.table по ссылке).
Используя эту строку кода, которую я прочитал здесь , это выглядит довольно долго, но это решило мою проблему! И, честно говоря, я сначала понимаю это, прежде чем понимаю самый короткий код ниже.
setDT(pisaMalaysia)[,SCH.TYPE := lookUpStratum$SCH.TYPE[match(pisaMalaysia$STRATUM,lookUpStratum$STRATUM)]]
Через несколько минут мне наконец-то удалось разобраться с этим кодом здесь и произвел это код:
setDT(pisaMalaysia)[lookUpStratum,SCH.TYPE1 := i.SCH.TYPE, on = c(STRATUM = "STRATUM")]
Я получил эти ответы из того же поста здесь .
Чтобы проверить, все ли одинаково:
table(pisaMalaysia$SCH.TYPE)
table(pisaMalaysia$SCH.TYPE1)
#' original data
pisaMalaysia[,table(STRATUM)]
Результаты:
> table(pisaMalaysia$SCH.TYPE)
Labuan Fully Residential MARA Perlis Fully Residential
54 122 78
Private Public Putrajaya Fully Residential
385 4929 78
Religious SBP Technical
273 2661 281
> table(pisaMalaysia$SCH.TYPE1)
Labuan Fully Residential MARA Perlis Fully Residential
54 122 78
Private Public Putrajaya Fully Residential
385 4929 78
Religious SBP Technical
273 2661 281
> pisaMalaysia[,table(STRATUM)]
STRATUM
MYS - stratum 01: MOE National Secondary School\\Other States
4929
MYS - stratum 02: MOE Religious School\\Other States
273
MYS - stratum 03: MOE Technical School\\Other States
281
MYS - stratum 04: MOE Fully Residential School
2661
MYS - stratum 05: non-MOE MARA Junior Science College\\Other States
122
MYS - stratum 06: non-MOE Other Schools\\Other States
385
MYS - stratum 07: Perlis non-“MOE Fully Residential Schools”
78
MYS - stratum 08: Wilayah Persekutuan Putrajaya non-“MOE Fully Residential Schools”
78
MYS - stratum 09: Wilayah Persekutuan Labuan non-“MOE Fully Residential Schools”
54
Спасибо! Надеюсь, это поможет и другим.