回复 第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>
回复 第19楼 的 superdesolator:
多谢@superdesolator,果然只计算到第362列,不计算363-368,就可以了[s:11]
回复 第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列开始的,按照您的语句,
</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:谢谢,谢谢!