r - R 组合使用 dplyr 的 pull 创建的多个向量
问题描述
我有 2019 年、2020 年的月度数据,而 2021 年(1 月和 2 月)只有 2 个月的数据。我想将这 26 个值组成一个向量用作时间序列。
my_dat <- data.frame(X2021 = c(1:2,rep(NA,10)), X2020 = 1:12, X2019 = 1:12)
library(dplyr)
X2021 <- my_dat %>% pull(X2021)
X2021 <- X2021[ -(3:12) ]
x <- my_dat %>% pull(X2019,X2020)
c(x, X2021)
##1 2 3 4 5 6 7 8 9 10 11 12
##1 2 3 4 5 6 7 8 9 10 11 12 1 2
我期望:
c(1:12, 1:12, 1:2)
什么地方出了错?
解决方案
由于pull
相当于$
在基础 R 中,并且只能用于提取一个变量,我想你想要select
然后unlist
. 例如:
my_dat %>% select(X2019, X2020) %>% unlist(use.names=FALSE)
#[1] 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12
这相当于使用[]
基数 R 中的方括号:
unlist(my_dat[c("X2019","X2020")], use.names=FALSE)
#[1] 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12
至于为什么原始代码不起作用,?pull
显示语法是:
pull(.data, var, name)
所以
my_dat %>% pull(X2019,X2020)
只是拉/提取X2019
和命名它X2020
。举一个更清楚的例子:
dat <- data.frame(a=1:3, b=month.abb[1:3])
pull(dat, a, b)
#Jan Feb Mar
# 1 2 3
unname(pull(dat, a, b))
#[1] 1 2 3
names(pull(dat, a, b))
#[1] "Jan" "Feb" "Mar"
推荐阅读
- prediction - 预测和时间序列
- salesforce-lightning - 防止在 LWC 上重新定位事件
- android - Firebase 远程配置服务器值与默认值相同吗?
- java - 如何将迭代计数值设置为java中的一个字段
- java - OperationException[状态{statusCode=PLACES_API_RATE_LIMIT_EXCEEDED,分辨率=null}]
- iis - Vuejs 部署问题:IIS、路由
- javascript - ReactJS:解析csv日期
- python - 如何根据规则提取唯一行?
- unix - awk 用列分隔符写入文件
- python - 如何使用 Python 从网页中提取 td 值?