Использование тидира - PullRequest
       7

Использование тидира

0 голосов
/ 06 декабря 2018

Вероятно, это просто:

Я бы хотел использовать tidyr gather_ для этого data.frame:

set.seed(1)
df <- data.frame(a=rnorm(10),b=rnorm(10),d=rnorm(10),id=paste0("id",1:10))

Сначала, используя gather:

df %>% tidyr::gather(key=name,value=val,-id)

Дает мне желаемый результат.

Однако, попытка сопоставить это с gather_ следующим образом:

df %>% tidyr::gather_(key_col="name",value_col="val",gather_cols="id")

Не дает мне то, чтоgather использование делает.

Есть идеи?

1 Ответ

0 голосов
/ 06 декабря 2018

Я думаю, что вы хотите:

df %>% tidyr::gather_(key_col="name",value_col="val",gather_cols= c('a', 'b', 'd'))

     id name         val
1   id1    a -0.62645381
2   id2    a  0.18364332
3   id3    a -0.83562861
4   id4    a  1.59528080
5   id5    a  0.32950777
6   id6    a -0.82046838
7   id7    a  0.48742905
8   id8    a  0.73832471
9   id9    a  0.57578135
10 id10    a -0.30538839
...

Поскольку вы собираете все столбцы, кроме id.Тем не менее, если вы просто хотите указать с символьными векторами, gather по-прежнему является опцией (и, как указывает @Maurits Evers, версии с суффиксом подчеркивания не рекомендуется):

> df %>% tidyr::gather(key="name",value="val",-"id")
     id name         val
1   id1    a -0.62645381
2   id2    a  0.18364332
3   id3    a -0.83562861
4   id4    a  1.59528080
5   id5    a  0.32950777
6   id6    a -0.82046838
7   id7    a  0.48742905
8   id8    a  0.73832471
9   id9    a  0.57578135
10 id10    a -0.30538839
...
...