今天有個小伙伴在問怎么把將下圖的數(shù)據(jù)存儲形式
改為下面這種
好方便做數(shù)據(jù)透視
我首先想到的是R語言的reshape2包缚态,這個我之前介紹過磁椒,不熟的小伙伴可以點利用reshape2包進(jìn)行數(shù)據(jù)逆透視和數(shù)據(jù)透視
但是我這個朋友對R不是熟,所以我就用VBA做了一下玫芦,其實邏輯很簡單浆熔,大家看看代碼就清楚了。VBA有時候真的很牛逼
Sub clean_data()
max_row = Worksheets("數(shù)據(jù)源").Range("a" & Rows.Count).End(xlUp).Row
Worksheets.Add.Name = "結(jié)果"
Worksheets("結(jié)果").Range("a1") = "用戶"
Worksheets("結(jié)果").Range("b1") = "app"
h = 1 '這個變量至關(guān)重要
For i = 2 To max_row
max_column = Worksheets("數(shù)據(jù)源").Range("a" & i).End(xlToRight).Column
For j = 2 To max_column
h = h + 1
Worksheets("結(jié)果").Range("a" & h) = Worksheets("數(shù)據(jù)源").Cells(i, 1).Value
Worksheets("結(jié)果").Range("b" & h) = Worksheets("數(shù)據(jù)源").Cells(i, j)
Next j
Next i
End Sub
ok桥帆,VBA介紹完了医增,下面來看看R中的神(腎)包(寶)reshape2怎么去實現(xiàn)
Sys.setlocale(category = "LC_ALL", locale = "zh_cn.utf-8") #保證Mac系統(tǒng)中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),]
有興趣的同學(xué)可以下載數(shù)據(jù)源試試
鏈接: https://pan.baidu.com/s/1by9_UFBV-U01N_TSIqCh-w 提取碼: ey42
但是有個問題,用VBA解出來的結(jié)果有197586行老虫,而用R解出來的結(jié)果卻只有196443行,這點不知道是哪里有問題叶骨,有空找找