自学内容网 自学内容网

R 语言数据分析案例

一个R 语言数据分析案例:

案例背景

假设我们有一份某电商平台的销售数据,数据包含了商品编号、商品类别、价格、销售量和销售日期等信息,我们想要分析不同类别商品的销售情况。

步骤

  1. 数据导入
    • 首先,假设数据存储在一个 CSV 文件中(例如 sales_data.csv),使用 read.csv() 函数将数据导入 R 环境。
sales_data <- read.csv("sales_data.csv")
  1. 数据探索
    • 使用 head() 函数查看数据的前几行,了解数据的结构和内容。
head(sales_data)
  • 使用 summary() 函数获取数据的统计摘要,包括数值型变量的最小值、最大值、均值、中位数等信息。
summary(sales_data)
  • 使用 str() 函数查看数据对象的结构,包括变量类型等。
str(sales_data)
  1. 数据清洗(如有需要)
    • 检查是否存在缺失值,可以使用 is.na() 函数结合 sum() 函数来统计每列缺失值的数量。
colSums(is.na(sales_data))
  • 如果有缺失值,可以根据具体情况进行处理,例如删除包含缺失值的行(使用 na.omit() 函数)或者使用合适的插补方法。
  1. 数据分析
    • 计算不同商品类别下的销售总额。可以使用 aggregate() 函数。
total_sales_by_category <- aggregate(price * sales_quantity ~ product_category, data = sales_data, sum)
  • 计算不同商品类别下的平均销售量和平均价格。
average_sales_by_category <- aggregate(sales_quantity ~ product_category, data = sales_data, mean)
average_price_by_category <- aggregate(price ~ product_category, data = sales_data, mean)
  • 绘制可视化图表,例如使用 barplot() 函数绘制不同类别商品销售总额的柱状图。
barplot(total_sales_by_category$`price * sales_quantity`, names.arg = total_sales_by_category$product_category, xlab = "Product Category", ylab = "Total Sales", main = "Total Sales by Product Category")

这个案例只是一个简单的示例,实际的数据分析可能会涉及更复杂的操作,如时间序列分析、相关性分析、聚类分析等,具体取决于业务问题和数据特点。

以下是 R 语言中一些常用的数据分析函数:

数据读取与写入函数

  • read.csv():用于读取以逗号分隔的 CSV(Comma - Separated Values)格式文件,将数据导入到 R 中的数据框(data frame)。例如:data <- read.csv("file.csv")
  • read.table():可以读取更通用格式的文本文件,通过指定分隔符等参数来解析数据。例如:data <- read.table("file.txt", sep = "\t"),这里以制表符分隔的文本文件为例。
  • write.csv():将数据框写入到 CSV 文件中。例如:write.csv(data, "new_file.csv")

数据探索函数

  • head():查看数据框或向量等对象的前几行。默认显示前 6 行,可指定参数n改变显示行数,如head(data, n = 10)
  • tail():与head()相反,查看对象的后几行,默认也是 6 行。
  • summary():对数据框中的每列数据生成统计摘要,包括最小值、最大值、均值、中位数和四分位数等信息。对于数值型数据,会给出基本的统计量;对于因子型数据,会显示不同水平的计数。例如:summary(data)
  • str():显示数据对象的结构,包括数据类型(如数值型、字符型、因子型等)、维度和内容预览等信息,有助于快速了解数据的概况。如str(data)

数据处理函数

  • subset():用于从数据框中提取满足特定条件的子集。例如,从数据框data中提取variable1大于 10 的行:new_data <- subset(data, variable1 > 10)
  • merge():用于合并两个数据框,可以根据指定的键(key)进行内连接、外连接等操作。例如:merged_data <- merge(data1, data2, by = "id"),这里根据id列合并data1data2
  • apply()系列函数:包括apply()lapply()sapply()等。
    • apply():对矩阵的行或列应用一个函数。例如,计算矩阵matrix_data每行的均值:row_means <- apply(matrix_data, 1, mean),其中 1 表示按行操作,2 表示按列操作。
    • lapply():对列表中的每个元素应用一个函数,并返回一个列表。例如:list_data <- list(a = 1:5, b = 6:10); result_list <- lapply(list_data, mean)
    • sapply():与lapply()类似,但尝试简化输出结果,如果结果是一个向量且长度合适,会返回向量而不是列表。

统计分析函数

  • mean():计算数值向量或数据框中数值列的均值。例如:mean(data$variable)
  • median():计算中位数。如median(data$variable)
  • sd():计算标准差。例如:sd(data$variable)
  • var():计算方差。如var(data$variable)
  • cor():计算变量之间的相关性矩阵,可以是数值向量或数据框中的数值列。例如:cor(data[, c("variable1", "variable2")])
  • t.test():进行 t 检验,可用于比较两组数据的均值是否有显著差异。例如:t.test(group1_data, group2_data)

可视化函数

  • plot():通用的绘图函数,可以绘制多种类型的图形,如散点图、折线图等。例如:plot(data$variable1, data$variable2)绘制变量 1 和变量 2 的散点图。
  • hist():绘制直方图,用于展示数值数据的分布。例如:hist(data$variable)
  • boxplot():绘制箱线图,可用于比较不同组数据的分布情况。例如:boxplot(variable ~ group, data = data),这里根据group变量绘制variable的箱线图。

R语言提供了多种函数用于不同类型的假设检验,以下是一些常见假设检验的实现方法:

一、t检验

  1. 单样本t检验
    • 假设我们有一个向量x,我们想检验其均值是否等于某个值(例如mu0 = 5)。
    • 使用t.test()函数,语法为:t.test(x, mu = mu0)
    • 示例:
x <- rnorm(30)  # 生成30个服从正态分布的随机数
t.test(x, mu = 0)
  1. 独立双样本t检验
    • 假设有两组数据group1group2
    • 语法为:t.test(group1, group2)。这里假设两组数据方差相等(默认情况),如果方差不等,可以使用t.test(group1, group2, va

原文地址:https://blog.csdn.net/huanghm88/article/details/143548198

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!