VBA和R的对决

作者: 鸣人吃土豆 | 来源:发表于2018-11-18 00:24 被阅读3次

    今天有个小伙伴在问怎么把将下图的数据存储形式

    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://pan.baidu.com/s/1by9_UFBV-U01N_TSIqCh-w 提取码: ey42

    但是有个问题,用VBA解出来的结果有197586行,而用R解出来的结果却只有196443行,这点不知道是哪里有问题,有空找找

    相关文章

      网友评论

        本文标题:VBA和R的对决

        本文链接:https://www.haomeiwen.com/subject/idcwfqtx.html