Я хочу поместить операцию в цикл for таким образом, чтобы она применялась к каждому подмножеству индивидуально.
Цель состоит в том, чтобы создать цикл for, который генерирует подмножество для переменной «State», а затем присваивает квантильные значения (1: 4 или 0-25%, 25% -50%, 50% -75%75% -100%) для каждой записи в каждом подмножестве. Это немного сложно объяснить, так что вот пример. Мои данные выглядят примерно так:
data <- data.frame(data)
State Summer_Temperature
CA 72
NY 84
TX 91
NY 70
NY 74
CA 70
TX 95
CA 71
NY 99
CA 67
NY 86
CA 70
TX 101
TX 110
NY 60
. .
. .
. .
. .
У меня начальный цикл for:
for (i in data$State) {
state.US <- paste("state", i, sep = "_")
assign(state.US, data[data$State == i,])
}
Это создает кадры данных для"state_CA", "state_NY" и "state_TX". Теперь я хочу создать новую переменную под названием «Квантиль» для каждого из этих подмножеств и назначить 1, 2, 3 или 4 для каждого наблюдения, основываясь на распределении температуры для данного состояния.
(Примечание: мне нужны квантили для каждого поднабора, а не для всего набора данных в целом.)
Я знаю, что могу сделать это вручную для каждого состояния с помощью кода:
state_CA$Quantile <- cut(state_CA$Summer_Temperature, breaks = quantile(state_CA$Summer_Temperature), labels = 1:4, include.lowest = TRUE)
Но я уверен, что есть более эффективный способ, чем повторять его для всех 50 состояний, и, возможно, я смогу добавить больше операций в цикл, как только найду способ сделать это.
Примерно так должен выглядеть результат:
State Summer_Temperature Quantile
CA 72 4
CA 70 2
CA 67 1
CA 71 3
CA 70 2
NY 99 4
NY 86 3
NY 84 3
NY 70 2
NY 74 2
NY 60 1
TX 91 1
TX 95 2
TX 101 3
TX 110 4
. .
. .
. .
. .
Этот вопрос преследует меня уже пару месяцев (различные проекты из школы и работы)и я почти закончил печатать повторяющийся код, когда я знаю, что есть лучший способ.
Мой доктор философии по R-программированию не смог предложить помощь, поэтому, если кто-нибудь сможет разъяснить мне это, я буду очень признателен.
Спасибо.
Редактировать: Я впервые на этой стороне переполнения стека, поэтому любые советы / критика приветствуются.