1、建立簡(jiǎn)單的二表連接:加載sqldf包,利用sql語(yǔ)句建立二表連接
colnames(test6)[3]=c("素材片段")#修改列名稱
library(sqldf)#加載包
test12021=sqldf("select name,素材片段,sum,創(chuàng)意點(diǎn)名稱 from test6,scb where test6.素材片段 = scb.素材片段 ")
或者,在R里面利用 %in% 進(jìn)行賦值,很麻煩。
2、按照條件進(jìn)行分組計(jì)算:新建立一個(gè)屬性,假設(shè)為A。滿足同一個(gè)條件時(shí)A[i]相等,改變其中一個(gè)條件時(shí)A[i]=A[i-1]+1。加入循環(huán):
for(i in 2:nrow(data)){
? if(data$usrid[i]==data$usrid[i-1] & log$iskw[i]==0){
? ? data$A[i]=data$A[i-1]
? }else{
? data$A[i]=data$A[i-1]+1
? }
}
3、利用data.table函數(shù)建立子表
## output:將用戶訪問級(jí)別數(shù)據(jù)按照關(guān)鍵詞匯總,得到關(guān)鍵詞級(jí)別的轉(zhuǎn)化數(shù)量和轉(zhuǎn)化分解
output=data.table(tmp6)[,list(acnt=sum(acnt),decmps.acnt=sum(weight)),by=kwid]
4、intersect(x,y)交集函數(shù),union(x,y)并集函數(shù),找不同setdiff(x,y),判斷相同setequal(x,y)(輸出值為TRUE?或者FALSE)
5、取單獨(dú)的:unique()? ??
6、把表格中的空值轉(zhuǎn)化為0:table2$R[is.na(table2$R)]=0
7、文本的拆分:利用gregexpr區(qū)分相同元素和不同元素
ptn = paste(pc2$標(biāo)題飄紅[i],pc2$描述飄紅[i],"-",",","/","!"," ","\\.","\\?"," ",";","\\&","_","\\[","\\]","…",pc2$關(guān)鍵詞[i],pc2$名稱[i], sep = '|')
txt = paste(pc2$創(chuàng)意標(biāo)題[i],pc2$創(chuàng)意描述[i])
# 取文本中和分格符一致的部分。得到的結(jié)果是list,用unlist()命令可以把它變成字符串
out1 = regmatches( txt, gregexpr(ptn,txt))
# 取文本中和分格符不一致的部分
out2 = regmatches( txt, gregexpr( ptn, txt), invert = T)
# 將兩部分結(jié)果拼接在一起,計(jì)算素材數(shù)
test1=as.data.frame(table( c( unlist( out1), unlist( out2))))
test1$name=pc2$名稱[i]
test1$q=pc2$q[i]
test1$index=test1$Freq*test1$q
8、按順序選排名前*個(gè):利用SQL語(yǔ)句
test51=sqldf("select * from test4 where name = 'XXX' order by sum DESC limit 238 ")