今天有个小伙伴在问怎么把将下图的数据存储形式
image.png
改为下面这种
好方便做数据透视
我首先想到的是R语言的reshape2包,这个我之前介绍过,不熟的小伙伴可以点利用reshape2包进行数据逆透视和数据透视
但是我这个朋友对R不是熟,所以我就用VBA做了一下,其实逻辑很简单,大家看看代码就清楚了。VBA有时候真的很牛逼
Sub clean_data() max_row = Worksheets("数据源").Range("a" & Rows.Count).End(xlUp).Row Worksheets.Add.Name = "结果" Worksheets("结果").Range("a1") = "用户" Worksheets("结果").Range("b1") = "app" h = 1 '这个变量至关重要 For i = 2 To max_row max_column = Worksheets("数据源").Range("a" & i).End(xlToRight).Column For j = 2 To max_column h = h + 1 Worksheets("结果").Range("a" & h) = Worksheets("数据源").Cells(i, 1).Value Worksheets("结果").Range("b" & h) = Worksheets("数据源").Cells(i, j) Next j Next i End Sub
ok,VBA介绍完了,下面来看看R中的神(肾)包(宝)reshape2怎么去实现
Sys.setlocale(category = "LC_ALL", locale = "zh_cn.utf-8") #保证Mac系统中R语言中中文能够正常显示library(readxl) data <- read_excel("/Volumes/XIAKE/副本app列表.xlsm") head(data) library(reshape2) data2 <- melt(data,id.vars = "hx_id",na.rm = TRUE) data_order <- data2[order(data2$hx_id),]
有兴趣的同学可以下载数据源试试
作者:鸣人吃土豆
链接:https://www.jianshu.com/p/9b1fab3e1332