R语言(数据导入,清洗,可视化,特征工程,建模)

  记录一下痛失的超级轻松的数据分析实习(线上),hr问我有没有相关经历,我说我会用jupyter book进行数据导入,清洗,可视化,特征工程,建模,python学和用的比较多,然后hr问我会不会R,我直接蒙了,它招募里面明明是写python和R会一款即可,我没接触过R啊,自然就实话实说了,结果。。。当然是寄了~

  算了反正个人感觉是和python差不多,但是能记住多少就得看我脑子了,我简单自学一下吧,下一期出python的数据导入,清洗,可视化,特征工程,建模那些,然后做个简单对比吧~

  R语言是一种编程语言和开发环境,主要用于数据分析和统计领域。它提供了丰富的统计分析和数据可视化功能,可以进行数据清洗、数据处理、建模和预测等各种数据分析任务。

1.安装与基础使用

(1)安装
【1】R语言

下载网址:https://cran.r-project.org/

【2】Rstudio

下载网址:https://www.rstudio.com/products/rstudio/

(下滑选择你电脑的版本)点击下载即可~不想那么麻烦的直接用我的安装包吧,给我点个赞就行了,栓Q:百度网盘链接:https://pan.baidu.com/s/1m6KX976JXM47xO7SpcSE8g?pwd=clyy 

【3】简单使用

2.基础语法

【1】变量赋值:使用“<-”或“=”符号将值赋给变量。

例如:x <- 10 或 x = 10。

【2】数据类型:R语言中的主要数据类型有数值(numeric)、字符(character)、逻辑(logical)和因子(factor)等。
  1. 数值(numeric):R语言的数值类型可以表示整数(如1, 2, 3)和浮点数(如1.5, 2.7)。在R中,数值类型使用内置的双精度浮点数表示。

  2. 字符(character):R语言的字符类型用于表示文本数据,如姓名、地址等。用双引号或单引号括起来的文本被当作字符类型。

  3. 逻辑(logical):类似bool,R语言的逻辑类型用于表示逻辑真(TRUE)和逻辑假(FALSE)。逻辑类型常用于条件判断和布尔运算。

  4. 因子(factor):类似于C语言中的枚举类型(enum)。它们都用于表示有限的类别数据,仅允许取特定的值,R语言的因子类型用于表示有限的类别数据。因子是通过将非数值类型的数据转换为离散的、有限的、按照特定顺序的类别来处理。

【3】向量:可以使用c()函数创建向量。

例如:x <- c(1, 2, 3)。

【4】列表:可以使用list()函数创建列表。列表可以包含不同类型的元素。

例如:my_list <- list(1, "apple", TRUE)。

【5】矩阵:可以使用matrix()函数创建矩阵。矩阵是二维的,可以包含相同类型的元素。

例如:my_matrix <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2)。

【6】数据框:可以使用data.frame()函数创建数据框。数据框是类似于表格的结构,可以包含不同类型的列。

例如:my_dataframe <- data.frame(name = c("Alice", "Bob"), age = c(25, 30))。

【7】函数:可以使用function()函数创建函数。函数可以接受参数,并返回一个结果。

#R语言
my_function <- function(x, y) {
   z <- x + y
   return(z)
}
#类似于c语言
int f(x,y){
  int z;
  z=x+y;
  return z;
}
【8】条件语句:可以使用if-else语句进行条件判断。
#R
if (x > 10) {
   print("x is greater than 10")
} else {
   print("x is less than or equal to 10")
}
【9】循环语句:可以使用for循环或while循环进行重复操作。
#R
for (i in 1:5) {
   print(i)
}

while (x < 10) {
   x <- x + 1
   print(x)
}

3.数据分析

(1)数据导入

【1】CSV文件:使用read.csv()函数导入CSV文件。

data <- read.csv("data.csv")

【2】Excel文件:使用readxl包中的read_excel()函数导入Excel文件。首先需要安装readxl包,然后使用以下代码导入文件。

install.packages("readxl")
library(readxl)

data <- read_excel("data.xlsx")

【3】SPSS文件:使用haven包中的read_sav()函数导入SPSS文件。首先需要安装haven包,然后使用以下代码导入文件。

install.packages("haven")
library(haven)

data <- read_sav("data.sav")

【4】SQL数据库:使用RODBC包或DBI包与数据库建立连接,并使用SQL查询从数据库中导入数据。首先需要安装对应的包,然后使用以下代码导入数据。此方法需要详细了解SQL语言和数据库连接配置。

install.packages("RODBC")
library(RODBC)

conn <- odbcConnect("database_name", uid="username", pwd="password")
data <- sqlQuery(conn, "SELECT * FROM table_name")
odbcClose(conn)
(2)数据清洗

【1】缺失值处理

# 检测缺失值
is.na(data)

# 删除包含缺失值的行
clean_data <- na.omit(data)

# 创建逻辑向量指示不包含缺失值的行
complete_cases <- complete.cases(data)

【2】重复值处理

# 检测重复值
duplicated(data)

# 删除重复的行
clean_data <- unique(data)

【3】数据转换

# 重命名变量
data$new_var <- data$old_var
data$new_var <- NULL # 删除变量

# 修改变量类型
data$new_var <- as.numeric(data$old_var)
data$new_var <- as.character(data$old_var)

# 创建新变量
data$new_var <- data$var1 + data$var2

# 使用dplyr包进行数据转换
library(dplyr)
clean_data <- data %>%
  select(var1, var2) %>%
  filter(var1 > 0) %>%
  mutate(new_var = var1 + var2)

【4】数据排序

# 对数据框按照某一列排序
sorted_data <- data[order(data$var1), ]

# 对向量排序
sorted_vector <- sort(vector)
(3)可视化
【1】基本绘图函数:R语言内置了一些基本的绘图函数,如plot()barplot()hist()
# 创建散点图
plot(x, y)

# 创建条形图
barplot(heights)

# 创建直方图
hist(data)
【2】ggplot2库:ggplot2是R语言中最流行的可视化库之一,提供了一种基于图层(layer)的绘图系统。使用ggplot2,可以创建包括散点图、条形图、线图、箱线图等各种图形。

# 安装ggplot2库
install.packages("ggplot2")

# 使用ggplot2创建散点图
library(ggplot2)
ggplot(data, aes(x, y)) +
  geom_point()

# 使用ggplot2创建条形图
ggplot(data, aes(x, y)) +
  geom_bar()

# 使用ggplot2创建线图
ggplot(data, aes(x, y)) +
  geom_line()
【3】lattice库:lattice是另一个常用的可视化库,提供了一种基于网格(grid)的绘图系统。lattice库可以创建散点图、条形图、线图等,并支持分组、子图和条件绘图等复杂的可视化需求。
# 安装lattice库
install.packages("lattice")

# 使用lattice创建散点图
library(lattice)
xyplot(y ~ x, data=data)

# 使用lattice创建条形图
barchart(y ~ x, data=data)

# 使用lattice创建线图
xyplot(y ~ x, data=data, type="l")
【4】plotly、ggvis、vega-lite等,没搜到教程,改天有空整理一下
(4)特征工程:是指对原始数据进行处理,以提取有用的特征,并为机器学习模型提供更具信息量和表达能力的输入。
1. 数据清洗:对数据进行清洗,包括处理缺失值、处理异常值、去除重复值等。可以使用函数如`na.omit()`处理缺失值,`outliers()`处理异常值,`duplicated()`去除重复值。
2. 特征选择:选择对目标变量有显著影响的特征。可以使用统计方法(如相关性分析、方差分析)或机器学习方法(如随机森林、LASSO回归)。
# 相关性分析
correlation <- cor(data)

# 方差分析
anova_result <- aov(target_variable ~ ., data=data)

# 随机森林特征重要性排序
library(randomForest)
rf_model <- randomForest(target_variable ~ ., data=data)
importance <- importance(rf_model)
3. 特征编码:将非数值型变量转换为数值形式,以便机器学习模型进行处理。可以使用函数如`factor()`将分类变量转换为因子,`dummyVars()`进行独热编码等。
# 将分类变量转换为因子
data$gender <- factor(data$gender)

# 进行独热编码
library(DMwR)
dummy_data <- dummyVars(~., data=data)
encoded_data <- predict(dummy_data, newdata=data)
4. 特征缩放:将数值型特征进行缩放,以确保不同特征之间的量纲一致。常见的方法有标准化(将数据转换为均值为0,标准差为1的分布)和归一化(将数据缩放到0-1的范围内)。
# 标准化
scaled_data <- scale(data)

# 归一化
normalized_data <- scale(data, center=FALSE, scale=apply(data, MARGIN=2, FUN=max) - apply(data, MARGIN=2, FUN=min))
5. 特征生成:通过原始特征的组合、变换或提取等方式生成新的特征。可以使用函数如`mutate()`进行特征生成。
# 通过组合生成新特征
library(dplyr)
generated_data <- data %>%
  mutate(new_feature = feature1 + feature2)

# 通过变换生成新特征
generated_data <- data %>%
  mutate(new_feature = log(feature1))

# 通过提取生成新特征
generated_data <- data %>%
  mutate(new_feature = substr(feature1, 1, 3))
(5)建模

1. 线性回归:使用`lm()`函数进行线性回归建模。

model <- lm(target_variable ~ ., data=data)
summary(model)

2. 逻辑回归:使用`glm()`函数进行逻辑回归建模。

model <- glm(target_variable ~ ., data=data, family=binomial)
summary(model)

3. 决策树:使用`rpart()`函数进行决策树建模。

library(rpart)
model <- rpart(target_variable ~ ., data=data)
printcp(model)

4. 随机森林:使用`randomForest()`函数进行随机森林建模。

library(randomForest)
model <- randomForest(target_variable ~ ., data=data)
print(model)

5. 支持向量机:使用`svm()`函数进行支持向量机建模。

library(e1071)
model <- svm(target_variable ~ ., data=data)
summary(model)

6. 朴素贝叶斯:使用`naiveBayes()`函数进行朴素贝叶斯建模。

library(e1071)
model <- naiveBayes(target_variable ~ ., data=data)
summary(model)

7. K近邻(K-Nearest Neighbors):使用`knn()`函数进行K近邻建模。

library(class)
model <- knn(train_data, test_data, target_variable, k=3)

8. 主成分分析(Principal Component Analysis):使用`prcomp()`函数进行主成分分析建模。

model <- prcomp(data, scale.=TRUE)
summary(model)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/357029.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue学习之使用开发工具创建项目、gitcode管理项目

Vue学习之使用开发工具创建项目、gitcode管理项目 翻阅与学习了vue的开发工具&#xff0c;通过对比最终采用HBuilderX作为开发工具&#xff0c;以下章节对HBuilder安装与基础使用介绍 1. HBuilder 下载 从HbuildX官网&#xff08;http://www.dcloud.io/hbuilderx.html&#…

HarmonyOS模拟器启动失败,电脑蓝屏解决办法

1、在Tool->Device Manager管理界面中&#xff0c;通过Wipe User Data清理模拟器用户数据&#xff0c;然后重启模拟器&#xff1b;如果该方法无效&#xff0c;需要Delete删除已创建的Local Emulater。 2、在Tool->SDK Manager管理界面的PlatForm选项卡中&#xff0c;取消…

Redis面试(三)

1.Redis报内存不足怎么处理 Redis内存不足的集中处理方式&#xff1a; 修改配置文件redis.cof的maxmemory参数&#xff0c;增加Redis的可用内存通过命令修改set maxmemory动态设置内存上限修改内存淘汰策略&#xff0c;及时释放内存使用Redis集群&#xff0c;及时进行扩容 2…

【MySQL】双写、重做日志对宕机时脏页数据落盘的作用的疑问及浅析

众所周知&#xff0c;双写机制、重做日志文件是mysql的InnoDB引擎的几个重要特性之二。其中两者的作用都是什么&#xff0c;很多文章都有分析&#xff0c;如&#xff0c;双写机制&#xff08;Double Write&#xff09;是mysql在crash后恢复的机制&#xff0c;而重做日志文件&am…

Java 集合 05 综合练习-返回多个数据

代码&#xff1a; import java.util.ArrayList; import java.util.Arrays;public class practice{public static void main(String[] args) {ArrayList<Phone> list new ArrayList<>();Phone p1 new Phone("小米",1000);Phone p2 new Phone("苹…

51单片机通过级联74HC595实现倒计时秒表Protues仿真设计

一、设计背景 近年来随着科技的飞速发展&#xff0c;单片机的应用正在不断的走向深入。本文阐述了51单片机通过级联74HC595实现倒计时秒表设计&#xff0c;倒计时精度达0.05s&#xff0c;解决了传统的由于倒计时精度不够造成的误差和不公平性&#xff0c;是各种体育竞赛的必备设…

数据结构.栈

一、栈的定义 二、初始化 #include<iostream> using namespace std; const int N 10; typedef struct {int data[N];int top; }SqStack; void InitSqStack(SqStack &S)//初始化 {S.top -1; } 三、进栈 void Push(SqStack& S, int x)//入栈 {S.data[S.top] x; …

深入了解Matplotlib中的子图创建方法

深入了解Matplotlib中的子图创建方法 一 add_axes( **kwargs):1.1 函数介绍1.2 示例一 创建第一张子图1.2 示例二 polar参数的运用1.3 示例三 创建多张子图 二 add_subplot(*args, **kwargs):2.1 函数介绍2.2 示例一 三 两种方法的区别3.1 参数形式3.2 布局灵活性3.3 适用场景3…

机器学习:多项式回归(Python)

多元线性回归闭式解&#xff1a; closed_form_sol.py import numpy as np import matplotlib.pyplot as pltclass LRClosedFormSol:def __init__(self, fit_interceptTrue, normalizeTrue):""":param fit_intercept: 是否训练bias:param normalize: 是否标准化…

verdaccio搭建npm私服

一、安装verdaccio 注&#xff1a;加上–unsafe-perm的原因是防止报grywarn权限的错 npm install -g verdaccio --unsafe-perm 二、启动verdaccio verdaccio 三、配置文件 找到config.yml一般情况下都在用户下的这个文件夹下面 注&#xff1a;首次启动后才会生成 C:\Users\h…

/etc/profile错误,命令失效

source /etc/profile后所有命令失效 执行 export PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 修改后 执行:wq! 执行:w !sudo tee %

怎么控制Element的数据树形表格展开所有行;递归操作,打造万能数据表格折叠。

HTML <el-button type"success" size"small" click"expandStatusFun"> <span v-show"expandStatusfalse"><i class"el-icon-folder-opened"></i>展开全部</span><span v-show"expan…

鸿蒙原生应用开发已全面启动,你还在等什么?

2019年&#xff0c;鸿蒙系统首次公开亮相&#xff0c;你们说&#xff0c;等等看&#xff0c;还不成熟&#xff1b; 2021年&#xff0c;鸿蒙系统首次在手机端升级&#xff0c;你们说&#xff0c;等等看&#xff0c;还不完善&#xff1b; 2024年&#xff0c;鸿飞计划发布&#…

STM32以太网接口在TCP/IP通信中的应用案例

在STM32的以太网通信中&#xff0c;TCP/IP协议广泛应用于各种领域&#xff0c;如远程监控、物联网、工业控制等。下面以一个STM32基于TCP/IP协议的以太网通信的应用案例为例进行介绍。 ✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术同步精进 ❤欢迎关注…

C#颜色拾取器

1&#xff0c;目的&#xff1a; 获取屏幕上任意位置像素的色值。 2&#xff0c;知识点: 热键的注册与注销。 /// <summary>/// 热键注册/// </summary>/// <param name"hWnd">要定义热键的窗口的句柄 </param>/// <param name"id…

如何使用Python Flask搭建一个web页面并实现远程访问

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

C++多线程1(复习向笔记)

创建线程以及相关函数 当用thread类创建线程对象绑定函数后&#xff0c;该线程在主线程执行时就已经自动开始执行了,join起到阻塞主线程的作用 #include <iostream> #include <thread> #include <string> using namespace std; //测试函数 void printStrin…

Java强训day10(选择题编程题)

选择题 public class Test01 {public static void main(String[] args) {try{int i 100 / 0;System.out.print(i);}catch(Exception e){System.out.print(1);throw new RuntimeException();}finally{System.out.print(2);}System.out.print(3);} }编程题 题目1 import jav…

day 59 503.下一个更大元素II 42. 接雨水

vector的扩充要熟悉 vector<int> numsT(nums.begin(),nums.end()); nums.insert(nums.end(),numsT.begin(),numsT.end()); class Solution { public:vector<int> nextGreaterElements(vector<int>& nums) {stack<int> st;vector<int> nums…

C++入门(一)— 使用VScode开发简介

文章目录 C 介绍C 擅长领域C 程序是如何开发编译器、链接器和库编译预处理编译阶段汇编阶段链接阶段 安装集成开发环境 &#xff08;IDE&#xff09;配置编译器&#xff1a;构建配置配置编译器&#xff1a;编译器扩展配置编译器&#xff1a;警告和错误级别配置编译器&#xff1…