Для каждого уникального идентификатора пользователя создайте вектор частот гистограммы R - PullRequest
1 голос
/ 14 июля 2020

У меня 608 уникальных идентификаторов пользователей с общим количеством ~ 58000 событий.

User.ID      state of charge
1000749          47.08
998235V          93.00
...              ...

Я пытаюсь создать вектор каждого идентификатора, который включает их гистограмму $ counts

<Input> {r for each user id create a vector }
list.ids=list()
#stchrg=SOCData$SOC
for (i in unique(SOCData$User.ID)){
  list.ids[[i]]=(hist(SOCData$SOC)$counts/sum(hist(SOCData$SOC)$count))*100
}
View(list.ids)
length(list.ids)
#the length is right it returns 608 which is correct
<Output>
list of each id=c(frequencies for 10 breaks)

На данный момент я получаю одинаковые значения частоты для всех идентификаторов, которые необходимо отрегулировать, и Idk how!

Позже я хочу либо собрать все массивы вместе, чтобы вычислить расстояния, либо получить их все в одной матрице. Если вы порекомендуете какой-либо лучший подход для достижения такого конечного результата, я ценю ваши предложения.

1 Ответ

0 голосов
/ 14 июля 2020

Внимание! Могут оказаться, что корзины не будут единообразными и равными для разных пользователей, поэтому я определил свою корзину и позже реализовал ее в своем hist ()

bins=c(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
list.ids = list()
for (i in unique(SOCData$User.ID)) {
list.ids[[as.character(i)]] =as.vector(hist(SOCData[SOCData$User.ID == i, 'SOC'], breaks=bins)$counts / sum(hist(SOCData[SOCData$User.ID == i, 'SOC'], breaks =bins)$count) * 100)
}
...