R语言新知识2019-12-02

1、建立简单的二表连接:加载sqldf包,利用sql语句建立二表连接

colnames(test6)[3]=c("素材片段")#修改列名称

library(sqldf)#加载包

test12021=sqldf("select name,素材片段,sum,创意点名称 from test6,scb where test6.素材片段 = scb.素材片段 ")

或者,在R里面利用 %in% 进行赋值,很麻烦。

2、按照条件进行分组计算:新建立一个属性,假设为A。满足同一个条件时A[i]相等,改变其中一个条件时A[i]=A[i-1]+1。加入循环:

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函数建立子表

## output:将用户访问级别数据按照关键词汇总,得到关键词级别的转化数量和转化分解

output=data.table(tmp6)[,list(acnt=sum(acnt),decmps.acnt=sum(weight)),by=kwid]

4、intersect(x,y)交集函数,union(x,y)并集函数找不同setdiff(x,y),判断相同setequal(x,y)(输出值为TRUE 或者FALSE)

5、取单独的:unique()    

6、把表格中的空值转化为0:table2$R[is.na(table2$R)]=0

7、文本的拆分:利用gregexpr区分相同元素和不同元素

ptn = paste(pc2$标题飘红[i],pc2$描述飘红[i],"-",",","/","!"," ","\\.","\\?"," ",";","\\&","_","\\[","\\]","…",pc2$关键词[i],pc2$名称[i], sep = '|')

txt = paste(pc2$创意标题[i],pc2$创意描述[i])

# 取文本中和分格符一致的部分。得到的结果是list,用unlist()命令可以把它变成字符串

out1 = regmatches( txt, gregexpr(ptn,txt))

# 取文本中和分格符不一致的部分

out2 = regmatches( txt, gregexpr( ptn, txt), invert = T)

# 将两部分结果拼接在一起,计算素材数

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、按顺序选排名前*个:利用SQL语句

test51=sqldf("select * from test4 where name = 'XXX' order by sum DESC limit 238 ")

你可能感兴趣的:(R语言新知识2019-12-02)