Как суммировать фрейм данных на основе значений, встречающихся в уникальных точках данных в определенном столбце? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть фрейм данных df, заданный:

r  t s      v
1  1 a   4.50
2  1 b   3.00
3  2 c   3.22
4  3 d   2.00
5  3 a   5.00
6  1 c   1.00
7  1 f  14.00
8  2 b 144.00
9  3 c   2.00
10 4 a  22.00
11 2 a   2.20
12 3 e 232.00
13 4 g  45.00
14 3 g   4.30
15 3 b   3.20
16 4 b   2.00
17 4 c   2.60

, и я хочу преобразовать его в другой фрейм данных df1 как

r t    a     b    c  d   e    f  g
1 1  4.5   3.0 1.00 NA  NA 14.0 NA
2 2  2.2 144.0 3.22 NA  NA   NA NA
3 3  5.0   3.2 2.00  2 232 NA 4.3
4 4 22.0   2.0 2.60 NA  NA NA 45.0

, гдеcolnames в df1 являются уникальными значениями из столбца s в df, и они сгруппированы по их вхождению в столбец t в df.

Не будет дубликатов 's 'в каждом' t ', поэтому можно предположить, что каждое' s 'появляется только один раз для каждого значения' t '.

Есть ли простой способ (используя dplyr или аналогичный) для манипулирования данными в df для получения df1?

1 Ответ

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

Я предполагаю, что у вас могут возникнуть проблемы с использованием ответов от дубликата цели, поскольку вы включили номер строки в качестве столбца.Мы можем spread для таблицы без столбца r. Обратите внимание, что в строках 3 и 4 выходных данных есть два значения, которые, по-видимому, неправильно классифицированы в выходных данных примера;они должны быть ниже g, а не f.

library(tidyverse)
tbl <- read_table2(
"t s      v
1 a   4.50
1 b   3.00
2 c   3.22
3 d   2.00
3 a   5.00
1 c   1.00
1 f  14.00
2 b 144.00
3 c   2.00
4 a  22.00
2 a   2.20
3 e 232.00
4 g  45.00
3 g   4.30
3 b   3.20
4 b   2.00
4 c   2.60"
)
tbl %>%
  spread(s, v)
#> # A tibble: 4 x 8
#>       t     a     b     c     d     e     f     g
#>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1     1   4.5   3    1       NA    NA    14  NA  
#> 2     2   2.2 144    3.22    NA    NA    NA  NA  
#> 3     3   5     3.2  2        2   232    NA   4.3
#> 4     4  22     2    2.6     NA    NA    NA  45

Создано в 2019-02-11 пакетом представительство (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...