Я надеюсь, что этот вопрос ранее не задавался, хотя я тщательно проверил.
По сути, у меня есть набор данных, состоящий из 21980 строк и 9 столбцов.Каждая строка состоит из 4 значений: «другое», «анархия», «стабильность» и «изменение».Например, один ряд: 1 анархия стабильность анархия стабильность анархия стабильность стабильность другое
Я хотел бы получить список, который дал бы мне для каждой строки (OBJECTID) длинуповторения для каждого значения правительства (анархия, другое, стабильность, изменение "
Проиллюстрируйте это предыдущим рядом: ID1 другая анархия анархия стабильность стабильность другая стабильность
Первый элемент моегобольшой список вывода будет: «анархия» = 2, 2 (есть два повтора длины два) «стабильность» = 1, 2 (одна стабильность и один повтордлина два) другое = 1 (еще один) изменение = 0 (без изменений в этой строке)
И в принципе, я хотел бы получить это для каждой строкивсего набора данных. Код, который я придумал, следующий (к сожалению, он не работает):
matric
k <- 0
test <- list(rec)
test[[1]]$stability <- 1
test[[1]]$stability <- 2
for (j in 1: length(matric$OBJECTID)) {
for (i in 2:8) {
if (matric[j,i] == "stability") (
while (matric[j,i] == matric[j,i+1]) {
k <- k+1
biglist[[j]]$stability <- k
k <- i+k
}
)
if (matric[j,i] == "change") (
while (matric[j,i] == matric[j,i+1]) {
k <- k+1
biglist[[j]]$change <- k
k <- i+k
}
)
if (matric[j,i] == "anarchy") (
while (matric[j,i] == matric[j,i+1]) {
k <- k+1
biglist[[j]]$anarchy <- k
k <- i+k
}
)
if (matric[j,i] == "other") (
while (matric[j,i] == matric[j,i+1]) {
k <- k+1
biglist[[j]]$other <- k
k <- i+k
}
)
}
}
Matric - это data.frame. biglist - это пустой список с 21980 элементами и каждымЭлемент представляет собой список счетыре имени = "стабильность", "анархия", "изменение" и "другое".
Спасибо.
Также я должен упомянуть, что нашелспособ легко получить повторы для каждого значения в строке с помощью функции rle ().Тем не менее, это не работает, так как в конце дня мне действительно нужны числа, соответствующие длине повторения для каждого значения («анархия», «изменение» и т. Д.) Для каждой строки, чтобы иметь возможность их усреднитьв дальнейшем.