【问题标题】:Using tidyr's gather_使用tidyr的gather_
【发布时间】:2019-05-07 12:32:10
【问题描述】:

可能很简单:

我想在这个data.frame上使用tidyrgather_

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 用法的作用。

有什么想法吗?

【问题讨论】:

  • tidyr 动词的下划线后缀版本已弃用。你有什么理由要使用它们吗?

标签: r dplyr tidyverse tidyr


【解决方案1】:

我想你想要:

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
...

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    相关资源
    最近更新 更多