Я использую функцию rep()
, чтобы повторять каждый элемент в строке несколько раз.Каждый имеющийся у меня символ содержит информацию о состоянии, и мне нужно, чтобы первые три элемента вектора символов повторялись три раза, а четвертый элемент повторялся пять раз.
Итак, допустим, у меня есть следующие векторы символов.
al <- c("AlabamaCity", "AlabamaCityST", "AlabamaCityState", "AlabamaZipCode")
ak <- c("AlaskaCity", "AlaskaCityST", "AlaskaCityState", "AlaskaZipCode")
az <- c("ArizonaCity", "ArizonaCityST", "ArizonaCityState", "ArizonaZipCode")
ar <- c("ArkansasCity", "ArkansasCityST", "ArkansasCityState", "ArkansasZipCode")
Я хочу получить следующий вывод:
AlabamaCity
AlabamaCity
AlabamaCity
AlabamaCityST
AlabamaCityST
AlabamaCityST
AlabamaCityState
AlabamaCityState
AlabamaCityState
AlabamaZipCode
AlabamaZipCode
AlabamaZipCode
AlabamaZipCode
AlabamaZipCode
AlabamaZipCode
...
Мне удалось получить желаемый результат с помощью следующей команды, но это немного неудобно, когда я бегучерез все пятьдесят штатов.Кроме того, у меня может быть другой столбец с 237 городами в Алабаме, и я неизбежно столкнусь с проблемами при сопоставлении имен в первом столбце со значениями во втором столбце.
dat = data.frame(name=c(rep(al[1:3],each=3), rep(al[4],each=6),
rep(ak[1:3],each=3), rep(ak[4],each=6)))
dat
dat2 = data.frame(name=c(rep(al[1:3],each=3), rep(al[4],each=6),
rep(ak[1:3],each=3), rep(ak[4],each=6)),
city=c(rep("x",each=15), rep("y",each=15)))
dat2
Конечно, вВ реальной жизни x и y не будут единичными значениями.
Так что мой вопрос касается более эффективного способа выполнения этой задачи.И тесно связан с вопросом, когда становится важным отказаться от процедурного программирования в пользу ООП в R. (не программист, так что вторая часть может быть действительно глупым вопросом) Более важно, это задача, на которую я должен смотретьдля решения проблемы.