R语言如何使用pivot_longer拆分列将股票宽表转为目标长表格式
你可以通过names_sep和names_to两个核心参数实现需求,完整代码如下:
library(tidyr) result <- data %>% pivot_longer( cols = -Date, names_to = c("Ticker", ".value"), names_sep = "x" )
参数说明
cols = -Date:指定除日期列外的所有列参与透视,不需要手动指定列名范围,后续新增其他股票代码的列也能自动适配names_to = c("Ticker", ".value"):将原列名拆分后的两部分分别分配用途:第一部分作为新的Ticker列的取值,第二部分作为数值列的列名。其中.value是pivot_longer的专用标记,它会将拆分出的对应内容直接作为输出表的列名,对应列的数值直接填充,无需额外二次转换就能实现同一股票、同一日期的开盘/收盘价放在同一行names_sep = "x":指定原列名按照字符x拆分,刚好可以把ENRSxOPEN拆为ENRS和OPEN两部分
运行上述代码后输出的结果和你需要的目标格式完全一致:
# A tibble: 6 × 4 Date Ticker OPEN CLOSE <chr> <chr> <dbl> <dbl> 1 1989-09-11 ENRS 83.0 82.1 2 1989-09-11 INFT 72.9 72.6 3 1989-09-12 ENRS 83.8 84.0 4 1989-09-12 INFT 73.5 72.5 5 1989-09-13 ENRS 83.2 83.9 6 1989-09-13 INFT 72.9 72.1
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

