我有一个看起来像这样的数据集:
input <-
data.frame(
event = 1:2,
url_1 = c("g1", "g3"),
name_1 = c("dc", "nyc"),
url_2 = c("g2", "g4"),
name_2 = c("sf", "la"))
Run Code Online (Sandbox Code Playgroud)
本质上,有成对的索引列以宽形式粘在一起。我想转换为 long 以提供此输出:
output <-
data.frame(
event = c(1,1,2,2),
url = c("g1", "g2", "g3", "g4"),
name = c("dc", "sf", "nyc", "la"))
Run Code Online (Sandbox Code Playgroud)
我想使用pivot_longer. 我试过这个:
input %>%
pivot_longer(contains("_"))
Run Code Online (Sandbox Code Playgroud)
如何获得识别列对的功能?
我在数据帧中将一堆时间序列数据堆叠在一起; 一个国家每个地区的一个系列.我想迭代地将seas()函数(从seasonal包中)应用到每个系列中,以便对系列进行季节性调整.为此,我首先要将系列转换为ts类.我正在努力做到这一切purrr.
这是一个最低限度的工作示例:
library(seasonal)
library(tidyverse)
set.seed(1234)
df <- data.frame(region = rep(1:10, each = 20),
quarter = rep(1:20, 10),
var = sample(5:200, 200, replace = T))
Run Code Online (Sandbox Code Playgroud)
对于每个区域(由数字索引),我想执行以下操作.这是第一个区域的例子:
tem1 <- df %>% filter(region==1)
tem2 <- ts(data = tem1$var, frequency = 4, start=c(1990,1))
tem3 <- seas(tem2)
tem4 <- as.data.frame(tem3$data)
Run Code Online (Sandbox Code Playgroud)
然后我想堆叠输出(即多个tem4数据帧,每个区域一个),以及区域和季度标识符.
那么,区域1的输出开始是这样的:
final seasonaladj trend irregular region quarter
1 27 27 96.95 -67.97279 1 1
2 126 126 96.95 27.87381 1 2
3 124 124 96.95 …Run Code Online (Sandbox Code Playgroud)