首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >遇到tidyr gather()的问题

遇到tidyr gather()的问题
EN

Stack Overflow用户
提问于 2018-08-31 07:18:58
回答 1查看 1.8K关注 0票数 -2

嗨,我正在尝试从Re_NM_df创建一个很长的数据帧

代码语言:javascript
复制
head(Re_NM_df, n = 3)
AustinPulse.Remain AustinPulse.NM1_SpacePump AustinPulse.NM4_Nothing
1                 NA                         0                       0
2                 NA                         0                       0
3                 NA                         0                       0

然而,我得到了这个错误

代码语言:javascript
复制
RE_NM_Long <- gather(data = Re_NM_df, "NurseMom", "Likely", AustinPulse$Remain, 
AustinPulse$NM1_SpacePump)
Error: `AustinPulse$Remain` must evaluate to column positions or names, not an 
integer vector
In addition: Warning message:
'glue::collapse' is deprecated.
Use 'glue_collapse' instead.
See help("Deprecated") and help("glue-deprecated")

这是我想要的输出。

代码语言:javascript
复制
     NursingMom                     Remain                    Available
1    NM1_Space                         1                       1
2    NM1_Space                         4                       0
3    NM4_Nothing                       2                       1*

*受访者选择没有可用的数据。

我似乎不能很好地编写gather函数。任何帮助都是非常感谢的。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 07:36:31

谢谢你的问题。如果能看到您希望最终数据框看起来是什么样子的示例,那就太好了。为了提供帮助,下面我使用tidyr::gather创建了一个可重现的示例,将示例数据转换为“长”数据帧。

使用gather时要记住的一件关键事情是指定组成“键”和“值”对的列名。您还可以选择和排除要作为附加参数收集的列。

代码语言:javascript
复制
library(tibble)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(tidyr)

x <- tribble(
  ~AustinPulse.Remain, ~AustinPulse.NM1_SpacePump, ~AustinPulse.NM4_Nothing,
                 NA,                         0,                       0,
                 NA,                         0,                       0,
                 NA,                         0,                       0
)

# gathering all columns
x %>% 
  tidyr::gather(attribute, value)
#> # A tibble: 9 x 2
#>   attribute                 value
#>   <chr>                     <dbl>
#> 1 AustinPulse.Remain          NA 
#> 2 AustinPulse.Remain          NA 
#> 3 AustinPulse.Remain          NA 
#> 4 AustinPulse.NM1_SpacePump    0.
#> 5 AustinPulse.NM1_SpacePump    0.
#> 6 AustinPulse.NM1_SpacePump    0.
#> 7 AustinPulse.NM4_Nothing      0.
#> 8 AustinPulse.NM4_Nothing      0.
#> 9 AustinPulse.NM4_Nothing      0.

    # here I have excluded AustinPulse.Remain from the gather
x %>% 
  tidyr::gather(NursingMom, value, -AustinPulse.Remain) %>% 
  dplyr::select(NursingMom, value, AustinPulse.Remain)
#> # A tibble: 6 x 3
#>   NursingMom                value AustinPulse.Remain
#>   <chr>                     <dbl> <lgl>             
#> 1 AustinPulse.NM1_SpacePump    0. NA                
#> 2 AustinPulse.NM1_SpacePump    0. NA                
#> 3 AustinPulse.NM1_SpacePump    0. NA                
#> 4 AustinPulse.NM4_Nothing      0. NA                
#> 5 AustinPulse.NM4_Nothing      0. NA                
#> 6 AustinPulse.NM4_Nothing      0. NA
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52106597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档