Как запустить цикл for в r с двумя условиями из векторов

Вариант с использованием функции генератора (который я считаю более pythonic):

def recvall(sock, buffer_size=4096):
    buf = sock.recv(buffer_size)
    while buf:
        yield buf
        if len(buf) < buffer_size: break
        buf = sock.recv(buffer_size)
# ...
with socket.create_connection((host, port)) as sock:
    sock.sendall(command)
    response = b''.join(recvall(sock))
0
задан Jakob R. 6 March 2019 в 13:19
поделиться

2 ответа

Вот решение с пакетом tidyverse. Обратите внимание, что здесь петли не нужны:

library(tidyverse)

df %>% as_tibble %>% group_by(Date, Company) %>% 
  summarise(x = mean(VolumeSEK)) %>% 
  ungroup() %>% 
  spread(Company, x)

# A tibble: 5 x 7
  Date       `Alfa Laval` Investor Kinnevik     SEB Skanska Swedbank
  <fct>             <dbl>    <dbl>    <dbl>   <dbl>   <dbl>    <dbl>
1 11.09.2018       22246.   31687.  76522.  48348.      NA    49560.
2 12.09.2018       30550   119912.   9017.9 52926.   60478.      NA 
3 13.09.2018          NA       NA   29150    1254.0     NA   161560.
4 14.09.2018          NA    89315.  11943.     NA       NA   149519.
5 17.09.2018          NA       NA   65490.  35451.   11523.    8512 
0
ответ дан Cettt 6 March 2019 в 13:19
поделиться

Подход data.table, приведенный к широкоформатному формату

library(data.table)
dcast( setDT(df)[ Company %in% Comp & Date %in% Day, ][, list( mean = mean(VolumeSEK)), by = .(Company, Date)], Company ~ Date )

#       Company 11.09.2018 12.09.2018 13.09.2018 14.09.2018 17.09.2018
# 1: Alfa Laval   22245.50   30550.00         NA         NA         NA
# 2:   Investor   31687.49  119911.60         NA   89315.02         NA
# 3:   Kinnevik   76522.20    9017.90   29150.00   11943.30   65490.40
# 4:        SEB   48347.85   52926.21    1253.98         NA   35450.97
# 5:    Skanska         NA   60478.40         NA         NA   11523.06
# 6:   Swedbank   49560.15         NA  161560.30  149519.25    8512.00

, переключите Company ~ Date в Date ~ Company для приведения в обратном направлении (т. Е. Компании в столбцы).

0
ответ дан Wimpel 6 March 2019 в 13:19
поделиться
Другие вопросы по тегам:

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