[转] R 函数

# 知识来源于网络,仅供交流使用,如有侵权请及时联系予以删除


str_extract_all()   # 字符提取,按照指定规则
x<-"abacdef123456789g"
str_extract_all(x,"[adef0-9]{2,5}")
    # 按照给定的[字符]提取出来,且提取出的各个字符串,最少1个字符,最多5个字符
 
 
str_extract_all()   # 字符提取,按照指定规则
x<-"abacdef123456789g"
str_extract_all(x,"[adef0-9]{2,5}")
    # 按照给定的[字符]提取出来,且提取出的各个字符串,最少1个字符,最多5个字符
separate()   # 字符串切割,按照指定规则
x<-data.frame(ID="as_01_ax01")x<-data.frame(ID="as_01_ax01")
xx<-separate(x,ID,sep='_',into=c("Season","Team1","Team2"),convert=T)
    # convert=F则为分割为字符串,convert=T则为分割后自动格式转换
# Mutate()  增加列,对已有列进行数据运算并添加为新列
mutate(hflights_df,gain = ArrDelay - DepDelay, speed = Distance / AirTime * 60)
    作用与 plyr::mutate() 相同, 与 base::transform() 相似, 优势在于可以在同一语句中对刚增加的列进行操作:
apply(item_cat,MARGIN=2, function(x) length(unique(x)))    # 行列处理,这是对各列求非重复项个数
    # MARGIN=1表示对行进行处理,如果为2,则表示对列进行处理
colSums(x,na.rm = FALSE,dims = 1)
rowSums(x,na.rm = FALSE,dims = 1)
colMeans(x,na.rm = FALSE,dims = 1)
rowMeans(x,na.rm = FALSE,dims = 1)
x <- sample(1:10, 1e5, rep = TRUE)
length(unique(x))     # 方法1:求非重复项的个数
library(dplyr)
n_distinct(x)      # 方法2:求非重复项的个数
apply(data=x,2, function(x) length(unique(x)))  # 求取x的各列非重复项个数
x = reorder(as.factor(shop_id), total_sales)
   #reorder是一个通用函数。该"default"方法将其第一个参数作为分类变量处理,并根据第二个变量(通常是数字)的值对其级别进行重新排序。
# 分组摘要,summarise()
    library(dplyr)
    x<-data.frame(id=1:6,name=c("wang","wang","li","chen","zhao","song"),
                  shuxue=c(89,85,68,79,96,53),
                  yuwen=c(77,68,86,87,92,63))
    summarise(x,sum(shuxue))  # 等价于 sum(x$shuxue)
    summarise(group_by(x,name),sum(shuxue))  # 根据name分组求和shuxue
    summarise(group_by(x,name),sum(shuxue,yuwen))  # 根据name分组求和shuxue+yuwen
    arrange(summarise(group_by(x,name),qiuhe=sum(shuxue,yuwen)),desc(qiuhe))  # 将分组求和的结果按照新增列qiuhe降序排列
       # 也可以先另存为数据框,然后用order进行排序输出

猜你喜欢

转载自blog.csdn.net/scpcmoon/article/details/80711236