R как использовать fun.aggregate в dcast для сохранения дискретных значений при расширении фрейма данных? - PullRequest
0 голосов
/ 24 февраля 2019

Я пытался использовать функцию dcast() в reshape2 для расширения большого фрейма данных в R. Однако я не уверен, что использовать для функции агрегирования, fun.aggregate, что dcast требует, потому чтоЯ хочу сохранить дискретные значения value.var, тогда как dcast настаивает на принудительном использовании length по умолчанию, делая каждое значение дихотомическим.Для иллюстрации мои данные выглядят так:

x <- c("a", "b", "c")
y <- c("d", "e", "f")
num <- c(10, 20, 21)
data <- data.frame(cbind(x,y,num))

x y num
a d  10
b e  20
c f  21

После ввода m <- dcast(data, x ~ y, value.var = "num"), dcast возвращает следующий DF:

  d  e  f
a 1  0  0
b 0  1  0
c 0  0  1

Однако я хочу, чтобы это выглядело так:

  d  e  f
a 10 0  0
b 0  20 0
c 0  0  21

Что я делаю не так?

1 Ответ

0 голосов
/ 24 февраля 2019

Вы также можете переключиться на tidyr.

library(tidyverse)

x <- c("a", "b", "c")
y <- c("d", "e", "f")
num <- c(10, 20, 21)

df <- tibble(x, y, num)

df %>% 
  spread(y,  num, fill = 0)

Выход:

# A tibble: 3 x 4
  x         d     e     f
  <chr> <dbl> <dbl> <dbl>
1 a        10     0     0
2 b         0    20     0
3 c         0     0    21
...