Nano Hash - криптовалюты, майнинг, программирование

Мутировать столбец на основе суммы определенных строк из другого фрейма данных

Я ищу здесь помощь. У меня есть два фрейма данных, df1 и df2. Я хочу добавить дополнительный столбец в df1 на основе суммы определенных строк в df2.

Df1 содержит названия станций. Df2 содержат местоположения, годы и наблюдения в градусах. Мне нужна сумма градусов для каждой станции. Эти степени должны быть суммой определенных мест на каждый год. Думайте об этом так, как «каждая станция должна получать свою сумму степеней, основанную на заданном местоположении, за каждый год». Я надеюсь закодировать только название станции и ее местоположение, годы в желаемом_output должны включать все годы, указанные в df2.

Неудачный пример и желаемый результат. Я предпочитаю работать в среде tidyverse.

Всего наилучшего

df1 <- data.frame(station = c("station_A", "station_B"))

df2 <- data.frame(location= c("south", "north", "north", "east", "west"), year = c(2000, 2000, 2001, 2001, 2001), degrees = c(5,3,9,5,2))

degrees_for_each_station <-
  df1%>% 
  mutate (degrees = case_when(
    station == "station_A" ~ if_else(df2$location %in% c("north","south"),
                                            sum(df2$degrees),
                                            NA),
    station == "station_B" ~ if_else(df2$location %in% c("north","east", "west"),
                                            sum(df2$degrees),
                                            NA)))

desired_output <- data.frame(station = c("station_A", "station_A","station_B", "station_B"),
                             year = c(2000, 2001, 2000, 2001),
                             degrees = c(8,9,3,16))```


12.02.2020

Ответы:


1

Один из способов:

library(tidyverse)

df1 %>%
  left_join(
    df2 %>%
      mutate(
        location = case_when(
          location == 'south' ~ 'station_A',
          location %in% c('east', 'west') ~ 'station_B',
          location == 'north' ~ 'station_A, station_B'
          )
      ) %>%
      separate_rows(location, sep = ', ') %>%
      group_by(location, year) %>%
      summarise(degrees = sum(degrees)),
    by = c('station' = 'location')
  )

Выход:

    station year degrees
1 station_A 2000       8
2 station_A 2001       9
3 station_B 2000       3
4 station_B 2001      16
12.02.2020
  • Похоже, я привел слишком упрощенный пример. Это определенно работает на моем примере, однако я надеялся на решение, в котором я мог бы сказать R, из каких местоположений каждая станция должна суммировать. В моем реальном наборе данных каждая станция имеет большое количество местоположений для суммирования, и в этом примере проблема возникает, когда некоторые местоположения находятся на двух или более станциях. 12.02.2020
  • Но этот пример действительно хорош, и он также будет работать с моими данными, мне просто нужно написать много кода. Прямо сейчас у меня есть короткий список станций с множеством местоположений для суммирования, и это будет строка кода для каждого местоположения, я надеялся на строку кода для каждой станции (см. Мой неудачный пример вверху) . 12.02.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..