R语言-数据透视表

Posted 基督徒Isaac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言-数据透视表相关的知识,希望对你有一定的参考价值。

# 数据透视表 #
library(tidyverse)

# 1.生成股票数据
stocks <- data.frame(
  time = as.Date('2017-12-01') + 0:4,
  X = rnorm(5, 0, 1),
  Y = rnorm(5, 0, 2),
  Z = rnorm(5, 0, 4)
  ) %>% 
  tibble()
stocks

# 2.宽变长
stocks %>% 
  gather(
    .,
    key = stock,
    value = price,
    -time
    ) %>% 
  # 然后筛选股票Y
  filter(
    .,
    stock == "Y",
    time == "2017-12-02" |
      time == "2017-12-03",
    price <= 3
  ) %>% 
  tibble()

# 将股票X作为参考系
stocks %>% 
  tibble() %>% 
  gather(
    .,
    key = stock, 
    value = price, 
    c(Y, Z)
    ) %>% 
  # 然后筛选固定日期
  filter(
    .,
    time == "2017-12-02" &
      price <= 1.2
  )

# 3.长变宽
stocks %>% 
  gather(
    key = stock, 
    value = price,
    -time
    ) %>% 
  tibble() %>% 
  spread(
    key = stock, 
    value = price
    )
  # 也可以写位于长表的第几列,如key = 2, value = 3

# 将股票X作为参考系
stocks %>% 
  gather(
    key = stock, 
    value = price, 
    c(Y, Z)
    ) %>% 
  spread(
    key = 3, 
    value = 4
    ) %>% 
  tibble()
  # fill = 0 参数设置填充缺失值为0

# 数据分列 #
# 创建数据
df<-data.frame(
  a=c(1,2),
  b=c("a_c","b_c")
  ) %>% 
  tibble()
df

# 列分割
df_separate <- 
  df %>% 
  separate(
    .,
    b,
    into = c("b","c"),
    sep = "_"
    )
df_separate

# 列合并
df_unite <- 
  df_separate %>% 
  unite(
    .,
    col = b,
    c(b,c),
    sep = "_"
    )
df_unite

# 参考文献:
# 1.R包系列——tidyr包教程 - 知乎
# 作者:陈小晖
# https://zhuanlan.zhihu.com/p/32348883
# 2.R语言-数据分列 - 知乎
# 作者:陈小晖
# https://zhuanlan.zhihu.com/p/26361683

以上是关于R语言-数据透视表的主要内容,如果未能解决你的问题,请参考以下文章

从 R 中的数据透视表库呈现的数据透视表中删除小计和总计

快速入门pandas进行数据挖掘数据分析[多维度排序数据筛选分组计算透视表]

快速入门pandas进行数据挖掘数据分析[多维度排序数据筛选分组计算透视表]

透视逆透视:R语言(reshape2tidyverse),Excel,Python

使用 pandas 数据透视表创建子图

在R中创建“数据透视表”,每行填充因子值