Форматирование данных JSON, полученных из базы данных PostgreSql

Для внутреннего соединения во всех столбцах вы также можете использовать fintersect из data.table -пакет или intersect из dplyr -пакета в качестве альтернатив merge без указания by -колонков. это даст строки, которые равны между двумя кадрами данных:

merge(df1, df2)
#   V1 V2
# 1  B  2
# 2  C  3
dplyr::intersect(df1, df2)
#   V1 V2
# 1  B  2
# 2  C  3
data.table::fintersect(setDT(df1), setDT(df2))
#    V1 V2
# 1:  B  2
# 2:  C  3

Пример данных:

df1 <- data.frame(V1 = LETTERS[1:4], V2 = 1:4)
df2 <- data.frame(V1 = LETTERS[2:3], V2 = 2:3)
0
задан user3763875 24 March 2019 в 03:38
поделиться

1 ответ

Вы можете использовать уменьшать

Здесь идея

  • На op объект создает ключи на основе идентификатора списка воспроизведения. [ 118]
  • Если ключ уже есть, мы добавляем новое значение в favourites
  • . Если нет, то мы инициализируем favourites с помощью {id, playlist_name , favourites:[]}, а затем нажимаем новое значение

.

let arr = [{"id": 1,"playlist_name": "chill_tunes","name": "Leo","artist_name": "John","genre": "Pop","rating": 42,"playlist_id": 1},{"id": 2,"playlist_name": "good_vibes","name": "Dan","artist_name": "Deer","genre": "Rock","rating": 52,"playlist_id": 1},{"id": 3,"playlist_name": "hump_day_happiness","name": "Nick","artist_name": "Legend","genre": "Rap","rating": 12,"playlist_id": 2}]

let final = arr.reduce((op,{id, playlist_name ,name ,artist_name ,genre ,rating , playlist_id}) => {
  op[playlist_id] = op[playlist_id] || {id, playlist_name , favourites:[]}
  op[playlist_id].favourites.push({id, playlist_id ,name ,artist_name ,genre ,rating})
  return op
},{})

console.log(Object.values(final))

0
ответ дан Code Maniac 24 March 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: