鹤啸九天 自律更自由,平凡不平庸 Less is More

R 语言

2017-01-01
wangqiwen
阅读量

Notes(温馨提示):

  1. ★ 首次阅读建议浏览:导航指南, 或划到本页末尾, 或直接点击跳转, 查看全站导航图
  2. 右上角工具条搜索文章,右下角二维码关注微信公众号(鹤啸九天),底栏分享、赞赏、评论
  3. ★ 转载请注明文章来源,知识点积累起来不容易,水滴石穿,绳锯木断,谢谢理解
  4. ★ 如有疑问,邮件讨论,欢迎贡献优质资料


R语言

R是一个用于统计分析、图形表示和报告的编程语言和软件环境。R由罗斯·伊哈卡(Ross Ihaka)和罗伯特·杰尔曼(Robert Gentleman)在新西兰奥克兰大学创建,目前由R开发核心团队进行开发。

R根据两位R作者(Robert Gentleman和Ross Ihaka)的名字首字母命名,并且部分是对贝尔实验室语言 S 的变异。

部署

安装

  • R
  • R Studio

先安装R再安装Rstudio

语法

R语法

环境

工作目录

getwd() # [1] "C:/Users/橙/Documents"
setwd("C:/Users) # 设置工作目录

变量

命名

注意:

  • 数字不能开头;
  • %号是非法字符,不可以用来命名;
  • .号后面不可以跟数字;
  • 不可以下划线开头。

查看

# 查看
ls()
# 清除指定变量:
rm()
# 清除所有变量:
rm(list=ls())

?sum # 查看函数sum用法
help(sum) # 同上
example(sum) # 同上

赋值

赋值方式有三种

  • 左箭头<-(<键+-键(等号左边的那个,不要按Shift))
  • 等号=
  • 右箭头->

代码

a<-2
b=3
c->4   #注意右箭头使用方法,被赋值的应该在右边,简单点说,就是某某赋值给谁,箭头就指向谁
# Error in 4 <- c : invalid (do_set) left-hand side to assignment
4->c
a   # 键盘敲出变量名,回车后就会显示结果
b # [1] 3
c # [1] 4

字符串操作

字符串在文本挖掘中很重要,使用正则表达式很方便。

string1 <- "Hello" # first string
string2 <- "World" # second string
# concatenate by using whitespace as a separator.
S <- paste(string1, string2, sep =" ")
print(S)

列表

列表(list) 是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。列表允许整合若干(可能无关的)对象到单个对象名下。

列表允许以一种简单的方式组织和重新调用不相干的信息。 许多R函数的运行结果都是以列表的形式返回的。函数需要返回两个以上变量时需采用list形式返回。

向量

向量(vector)是R语言的最基本的数据类型、R语言的核心、R语言中的战斗机 ,向量是用于存储数值型、字符型或逻辑型数据的一维结构

矩阵

矩阵(matrix) 是一种特殊的向量,包含两个附加的属性:行数和列数,R生存矩阵时按列存储。

注意向量不能看成只有1列或1行的矩阵

数据框

数据框的创建

数据框类似矩阵,有行列两个维度。数据框允许不同的列可以包含不同类型的数据。注意:数据框可以看成每个组件长度相同的列表。。个人见解:数据框就像excel表格一样,比矩阵高级一点。很多东西都可以参考矩阵。

x<-data.frame(col1, col2, col3,……) # 其中的列向量col1, col2, col3,… 可为任何类型(如字符型、数值型或逻辑型)。数据框可以看成每个组件长度相同的列表,数据框类似矩阵,有行列两个维度。建议数据框在Rstudio的左上角框里查看。

因子和表

因子(factor) 是R语言中许多强大运算的基础,因子的设计思想来着统计学中的名义变量(分类变量),因子可以简单的看做一个附加了更多信息的向量。

使用方法:

  • factor(x = character(), levels, labels = levels, exclude = NA, ordered = is.ordered(x), nmax = NA)

函数

数学运算与模拟

这部分介绍部分常用与数学计算与模拟的函数

内置函数

R中含有大量的函数,比如求和函数sum(),求均值mean()等

自定义函数

#函数名<-function(){·······}
f<-function(a,b)   # 写一个求和函数,function()是固定格式
{
  k<-a+b
  return(k) # 返回结果为k,如果没有设置返回值,则函数会返回最后一行执行的结果
}

f(3,4)      # 使用函数名加一个括号调用函数 [1] 7

安装包

安装R包需要使用 install.packages()BiocManager::install() 函数安装,library() 函数调用

以安装openxlsx为例,如下:

# 安装R包代码如下
install.packages("openxlsx")
# 或
BiocManager::install("openxlsx")
library(openxlsx)

文件

读文件

多个函数可以读取文件

  • scan()函数: 文件读取
  • readline()函数: 键盘读取
  • readLines()函数: 文件一次性读取
  • read.table()函数: 读取矩阵数据
  • read.xlsx()函数: excel 文件

示例

scan(file="C://Users//橙//Desktop//juli.txt",what=" ",sep=" ")
duru2<-readline()
duru3<-readline("请输入:")
readLines("C://Users//juli.txt")

read.table()函数
read.xlsx() # 安装"openxlsx包"

写文件

文件的输出

  • write.table()函数,参数与read.table()对应
  • cat()函数
write("Hello,wrold","C://Users//橙//Desktop//juli.txt")

cat("hello wrold",file="C://Users//橙//Desktop//juli.txt",append=T)#追加写入,(里面有内容)
cat("hello wrold",file="C://Users//橙//Desktop//juli1.txt")  #覆盖写入,里面的内容被覆盖了

### 保存

软件
1. 可以直接输入q()函数也可以右上角直接叉掉后根据提示操作
2. 当写完一个文件时可以点击保存按钮根据提示选择保存位置文件后缀有多种看你保存哪种文件有.R.Rdata等后缀.R一般是保存代码的.Rdata是保存处理后的数据的

文件保存 save()函数可以保存多种格式的文件

```r
save(b,file="xxx.Rdata") #保存b,文件是xxx,格式为.Rdata
save(b,c,file="xxx.Rdata")  #保存b,c,文件是xxx,格式为.Rdata
save.image("xxx.Rdata")  #保存所有(你定义的所有变量及数据),文件是xxx,格式为.Rdata

画图

R语言画图

  • R自带plot函数
  • ggplot2函数

plot

R自带的画图工具,R绘图基础图形系统的核心 plot()函数,plot 是一个泛型函数,使用plot 时真正被调用的时函数依赖于对象所属的类。

plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL,log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL,ann = par("ann"), axes = TRUE, frame.plot = axes,panel.first = NULL, panel.last = NULL, asp = NA, ...)

plot 函数中有许多的参数,其中x,y指横纵坐标对应的参数

案例

数据分析

代码:

  • 读取 excel 文件,筛选属性,并输出 excel 文件
# 加载必要的库
if (!require("readxl")) install.packages("readxl")
if (!require("writexl")) install.packages("writexl")
if (!require("mice")) install.packages("mice")
if (!require("dplyr")) install.packages("dplyr")  # 用于数据处理

library(readxl)
library(writexl)
library(mice)
library(dplyr)

main_dir <- "/Users/wqw/Desktop/tmp_med"
input_file <- paste(main_dir, "med_data.xlsx", sep ="/")
output_file <- paste(main_dir, "med_data_out.xlsx", sep ="/")
# 读取数据
data <- read_excel(input_file)
# 1. 属性筛选:移除空值超过20%的列
null_ratio <- colMeans(is.na(data))
filtered_data <- data[, null_ratio <= 0.2]
# 2. 预处理:移除常量或近常量变量(方差接近0的变量)
# 计算每列的方差
variances <- apply(filtered_data, 2, function(x) var(x, na.rm = TRUE))
# result = valid_variances[valid_variances > 0]
# 保留方差大于0的变量(可根据需要调整阈值)
filtered_data <- filtered_data[, variances > 0 & !is.na(variances)]

# 3. 尝试插值(若仍报错,会自动切换到简单插值方法)
tryCatch({
  # 方法1:使用mice包,调整参数减少复杂度
  imputed_data <- mice(filtered_data, 
                       m = 1, 
                       method = "pmm",  # 预测均值匹配
                       maxit = 20,      # 减少迭代次数
                       seed = 123)
  completed_data <<- complete(imputed_data, 1) # 全局变量
  # completed_data <- complete(imputed_data, 1) # 局部变量
}, error = function(e) {
  # 方法2:若mice失败,使用简单插值(均值/中位数)
  message("多重插补失败,使用简单插值替代:", e$message)
  completed_data <<- filtered_data %>%
    mutate(across(everything(), 
                 ~ifelse(is.na(.), 
                         ifelse(is.numeric(.), median(., na.rm = TRUE), .[!is.na(.)][1]), 
                         .)))
})

# 保存结果
write_xlsx(completed_data, output_file)

# 提示信息
cat("数据处理完成!\n")
cat("处理后的数据已保存\n")
cat("原始列数:", ncol(data), "\n")
cat("筛选后保留的列数:", ncol(filtered_data), "\n")

结束


支付宝打赏 微信打赏

~ 海内存知已,天涯若比邻 ~

Share

Related Posts

标题:政治生态-politics

摘要:全国著名村官秦玥飞的经验分享

标题:GO语言学习笔记

摘要:编程语言知识点

站内可视化导航

文章可视化导读:鼠标划过图形块时,如果出现蓝色光环, 点击即可跳转到对应主题

Comments

--disqus--

    Content
    My Moment ( 微信公众号 )
    欢迎关注鹤啸九天