Davidhust

  •  
  • 2013年5月16日
  • 注册于 2011年5月4日
  • 回复 第19楼 的 superdesolator:

    多谢@superdesolator,果然只计算到第362列,不计算363-368,就可以了[s:11]



    col<-apply(x[,3:362], 1, function(x) which(x>0)[1])


    但有个问题,得到的dta矩阵,缺乏x第一列的客户ID,没法进行下一步工作了,该肿么办呢?[s:12]
    </p>
  • 回复 第15楼 的 superdesolator:

    以及,我按照您的代码,做到这一步,

    dta<-matrix(x[d],nrow(dt),byrow=TRUE)

    出来“错误于as.matrix(x) : 下标出界”

    不知是怎么回事啊?[s:16]

    x 是 78042 obs. of 370 variables(其中第3:368是消费数据)

    dt 是 78042×7 double matrix

    d 是 546294×2 double matrix


  • 回复 第15楼 的 superdesolator:

    b=rep(1:nrow(dt),each=ncol(dt))

    d=cbind(b,as.numeric(t(dt)))

    b,d在此过程中有什么作用?

  • 回复 第13楼 的 superdesolator:

    谢谢@superdesolator

    大概明白是抽取出符合要求的列,再求和

    但没看懂如何把这些列给抽出来的

    每一步是什么意思?

    从col1=col+1;col2=col+2;col3=col+3;col4=col+4;col5=col+5;col6=col+6开始就看不懂了[s:12]

    求指教

  • 在诸位大神指点下,首次消费日期和最后消费日期的问题已解决,多谢@Robert_Hoo,@刘思喆,@zggjtsgzczh,@superdesolator [s:11]

    现在有个新问题,在有了首次消费日期后,如何计算从首次消费日开始,连续7天的消费值的和呢?

    即从首列非0起,连续加7列数据,感觉apply和function依然可以用,但苦于不知如何下手,请指教[s:16]

  • 回复 第4楼 的 刘思喆:

    谢谢,我也是最近看到一些R书籍说要尽量避免循环,可是太菜了,不会写这么精妙的语句[s:12]

    关于向量rev,能方便举个例子么?谢谢!

  • 回复 第2楼 的 Robert_Hoo:

    谢谢!我的消费数据是从第4列开始的,按照您的语句,



    g_char<-apply(g, 1, function(g) which(g[,4:21]>0)[1])

    但出现提示:错误于g[, 4:21] : 量度数目不对
    </p>

    另外我想把首次消费日期做成变量,直接加到原数据新列里,如何实现呢?

  • 有90万行×20列的数据,是90万个客户在每天的消费数据,不消费时的值为0,有消费的时候大于0,我想查找这批客户首次消费大于0的日期,程序是这样子的:

    <br />
    m<-dim(x)[1]<br />
    n<-dim(x)[2]-1</p>
    <p>for (j in 1:m){<br />
        for (i in 1:n) if(x[j,i]>0) {<br />
            x[j,n+1] <- i<br />
            break<br />
        }<br />
        j<-j+1<br />
    }<br />
    
    </p>

    但跑了16个小时,还没有运行完,不知是怎么回事?电脑是win7 i5 2.5GHz 4.00GB内存

    另外,如果我想查找客户消费大于0出现的最后一天,就是这一天消费大于0,这一天之后的日期的消费都为0,该怎么写呢?

    拜谢诸位大神!

  • 回复 第2楼 的 波波头一头:多谢版大,果然给力,[s:11]

  • 我在使用tapply计数时,R总是会把0值也计算进去,请问高手们,如何让R计算时不考虑0值呢?

    我的tapply语句是:

    tapply(score01,branch,length)

  • 回复 第4楼 的 nan.xiao:谢谢,我也用了as.data这个函数,不过得到的都是NA,数据从csv导入R后是这个样子的:

    ID 日期

    1 141711 2003-02-20 18:39:14

    2 159830 2003-01-01 00:00:00

    3 209880 2003-01-01 00:00:00

    4 258373 2003-01-01 00:00:00

    5 265045 2003-01-01 00:00:00

    看日期这一列,带着日期和时间,我想把它变成日期变量,或者说只要前段的那个日期,该怎么做呢?

  • 回复 第2楼 的 nan.xiao:谢谢,是这样子用么:

    write.table(x,"C:/Documents and Settings/Administrator/桌面/mydata.txt",row.names = FALSE,sep="\t")

    测试了下,是可以的

    但第二个,as.data()这个怎么用呢?我将日期列读入后,x$日期<-as.date(x$日期),得到的是NA

  • Q1:我的数据导出语句是

    write.table(x,"C:/Documents and Settings/Administrator/桌面/mydata.txt", sep="\t")

    但导出来的TXT文件第一列总是R标记的行数,1,2,3,4。。。,而且当用excel或sas打开这个文件时,由于多了这一列,会造成列名对应错误,请问大佬们该如何不导出这一列数?

    Q2:从csv导入到R中时,包含有日期列,但是导入到R后,就变成了文本格式,想进行日期变量的计算都不行了,请问我在导入时或者导入后该如何处理这个问题,谢谢!

  • mark之,并随众留邮箱 wzlxyz163@gmail.com

  • 回复 第1楼 的 yinglee:R只能读取ANSI编码的txt,楼主需注意

  • 回复 第1楼 的 skyindeer:更正下,应该是as.factor(health)

  • 回复 第1楼 的 skyindeer:你的health又不是连续变量,当然是factor了

  • 回复 第2楼 的 bioshaw:再次请问,R这个merge函数是自动识别这个匹配的关键字“id”么?那假如x这个组中也有个变量“weight”呢?R会不会也将weight当作关键字?

    如果我的结果还是需要以x为主表,按“id“(当y没有某个id时,以NA填充)该如何合并?

    谢谢~

  • 回复 第2楼 的 bioshaw:谢谢,谢谢!