透视、逆透视:R语言(reshape2、tidyverse),Excel,Python

  • 总结(Python的pandas,R语言的reshape2、tidyr)
    在这里插入图片描述

  • R语言(reshape2、tidyverse)

数据来源:R语言实战第二版P106
在这里插入图片描述

library(tidyverse)
library(reshape2)

# 透视、逆透视
# R语言实战第二版P106
# https://r4ds.had.co.nz/
# https://bookdown.org/Maxine/r4ds/
# https://bookdown.org/Maxine/r4ds/pivoting.html

# sqldf     https://blog.csdn.net/yunru_yang/article/details/60749026
# reshape2  https://www.jianshu.com/p/36f5268e932c
# tidyr     https://www.jianshu.com/p/46a53717d964

# melt(融)变长pivot_longer(逆透)列名:组合新名
# dcast(拆)变宽pivot_wider(透视)列名:组内变量

# mydata <- cbind(ID, Time, X1, X2) %>% data.frame(); mydata
mydata <- readxl::read_excel("WPS Cloud Files/368440790/pivot.xlsx", sheet = "Sheet4"); mydata

# 变长
md <- mydata %>% melt(id.vars = c("ID","Time")); md
mydata %>% pivot_longer(cols = c("X1","X2"), names_to = "variable") %>% arrange(variable)

# 变宽
md %>% dcast(ID+Time~variable, value.var = "value")
md %>% pivot_wider(id_cols = c(ID, Time), names_from = variable, values_from = value)

# 变宽(汇总依据 = mean)
md %>% dcast(ID~variable, value.var = "value", fun.aggregate = mean)
md %>% pivot_wider(id_cols = ID, names_from = variable, values_from = value, values_fn = mean)
  • Python
# pivot 初级重组
# pivot_table 数值处理
# melt 逆透变长

# 导入Excel https://zhuanlan.zhihu.com/p/88653839
# 透视表 https://blog.csdn.net/weixin_31669073/article/details/112217335
# https://blog.csdn.net/AaronPaul/article/details/106682486
# https://blog.csdn.net/shine4869/article/details/105635203
# https://www.cnblogs.com/zlslch/p/8644585.html
# https://zhuanlan.zhihu.com/p/54066705
# https://pandas.pydata.org/pandas-docs/stable/index.html
from pandas import *

mydata = read_excel("e:pivot.xlsx", sheet_name = "Sheet4") # header, name, index_col
mydata

md = mydata.melt(id_vars = ["ID", "Time"],
                 value_vars = ["X1", "X2"],
                 var_name = "variable",
                 value_name = "value"); md

md.pivot(index = ["ID", "Time"],
         columns = "variable",
         values = "value")

md.pivot_table(index = ["ID", "Time"],
               columns = "variable",
               values = "value")

md.pivot_table(index = ["ID"],
               columns = "variable",
               values = "value",
               aggfunc = ["mean","sum"])
  • Excel数据透视表的组合分段方法:

在这里插入图片描述

  • SQL

https://www.jianshu.com/p/afad4da7d5a8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值