

统一声明:
1.本站联系方式QQ:709466365 TG:@UXWNET 官方TG频道:@UXW_NET 如果有其他人通过本站链接联系您导致被骗,本站一律不负责! 2.需要付费搭建请联系站长QQ:709466365 TG:@UXWNET 3.免实名域名注册购买- 游侠云域名 4.免实名国外服务器购买- 游侠网云服务
我们不用虚构数据,直接用贴近日常的真实数据集(比如电商销售、用户行为数据),每一步操作都附带着能直接复制粘贴的R代码,连注释都帮你写清楚了。不管你是想完成课程作业、准备职场汇报,还是单纯想提升R语言实战能力,跟着这套流程走,就能从“只会敲基础函数”变成“能独立完成完整数据分析项目”。
没有晦涩的公式,没有跳步的操作,哪怕是刚入门的新手也能看懂——毕竟数据分析的核心,从来都是“把理论变成可操作的步骤”。现在打开RStudio,跟着代码一步步做,你会发现:原来用R做数据分析,真的没那么难。
你有没有过这种情况?学了R语言的ifelse
、for
循环,可真要帮朋友的小店分析销售数据时,盯着Excel表发呆——不知道从哪导入数据,看着一堆缺失值慌得一批,好不容易整理完,又不会做能给老板看的图表?我去年就遇到过这事儿,帮楼下奶茶店做了次全流程分析,从数据乱糟糟到做出能直接当汇报的图表,就用了5步,今天把整个过程拆给你看,连代码都给你准备好,复制粘贴就能用。
从0到1做R语言数据分析:我帮奶茶店做的真实案例
去年夏天,楼下奶茶店的张老板找我,说想知道“哪款奶茶最赚钱”“什么时候该多备原料”,可他给我的数据是3个Excel表——里面有“销售时间”“产品名称”“单价”“销量”,还有不少空单元格:比如有的订单没写产品名称,有的销量填成了“售罄”,甚至还有“微信支付”“支付宝”混在“产品名称”列里的情况。我当时第一反应不是写代码,而是先问张老板:“你最想从数据里看到什么?”他说:“能直接告诉我‘明天该进多少珍珠’‘哪种奶茶别进了’就行。”
第一步:数据导入——不用Excel复制,R直接读文件
我先用R的readxl
包把Excel数据导进去,代码特别简单:
library(readxl) # 加载读Excel的包
sales_data <
read_excel("奶茶店销售数据.xlsx") # 读数据,改文件路径就行
你看,library()
就是“拿工具”,read_excel()
就是“打开Excel文件”——我之前帮朋友导数据时,总有人问“为什么不用Excel复制粘贴到R?”其实Excel数据量大的时候,复制会乱码,用readxl
包直接读,比复制靠谱10倍。导完数据我先看了眼sales_data
,里面有1234条记录,刚好是张老板说的“上个月全量销售数据”。
第二步:数据清洗——把“乱糟糟”变成“能分析”
导完数据的下一秒,我就遇到了“缺失值”问题:用skimr
包的skim()
函数看了眼,“产品名称”列有18条缺失值(占1.5%),“销量”列有5条填了“售罄”(其实是卖完了,销量应该是0)。我当时想:“这些缺失值直接删了行不行?”问了张老板,他说“缺失产品名称的都是店员忘选,直接删了吧”;“售罄”的订单其实是没卖出,所以销量改成0。
于是用dplyr
包的函数处理:
library(dplyr) # 加载数据处理包
删除产品名称缺失的行
sales_clean <
sales_data %>% filter(!is.na(产品名称))
把“售罄”改成0
sales_clean <
sales_clean %>%
mutate(销量 = ifelse(销量 == "售罄", 0, as.numeric(销量)))
这里的%>%
是“管道符”,就像流水线——把前面的数据传给后面的函数,不用写一堆a <
的嵌套。我之前帮另一家咖啡店做数据时,没加as.numeric()
,结果“销量”列变成了字符型,算总销售额时全错了,你一定要记着把数值列转成数字类型!
处理完缺失值,我又用distinct()
函数删了3条重复订单(店员不小心点了两次提交),最后sales_clean
剩下1216条有效数据——张老板凑过来看了眼,说:“这才是我要的数据!”
第三步:数据分析——帮张老板找到“赚钱密码”
数据干净了,终于能回答张老板的问题了。我先算“每款产品的总销售额”:
product_sales <sales_clean %>%
group_by(产品名称) %>% # 按产品分组
summarise(总销售额 = sum(单价 销量)) # 计算总销售额
运行完我差点笑出声——张老板一直以为“珍珠奶茶”是销冠,结果数据显示“杨枝甘露”的总销售额是12890元,比珍珠奶茶多3000块!张老板瞪大眼睛:“我以为杨枝甘露贵,买的人少,没想到卖一杯顶两杯珍珠奶茶!”
接着我想帮他找“高峰时段”——毕竟知道什么时候忙,才能提前备原料。我用lubridate
包的hour()
函数把“销售时间”拆成“小时”列:
library(lubridate) # 处理时间的包
sales_clean <
sales_clean %>%
mutate(销售小时 = hour(销售时间)) # 从“销售时间”里提取小时
计算每个小时的总销量
hour_sales <
sales_clean %>%
group_by(销售小时) %>%
summarise(总销量 = sum(销量))
结果出来,13:00-15:00(下午茶时段)和18:00-20:00(下班时段)的总销量占了全天的60%!张老板拍大腿:“我说每天下午3点都缺珍珠,原来那时候是高峰!”后来他把珍珠的备货量在这两个时段加了20%,再也没出现过“售罄”的情况。
第四步:数据可视化——把数字变成“老板能看懂的图”
张老板说:“你给我看数字我头晕,能不能做成图?”我用ggplot2
包做了两张图,直接让他拍板用在周会上。
第一张是“产品销售额排名”的横置柱状图(横置比竖置更适合看长产品名):
library(ggplot2) # 加载可视化包
ggplot(product_sales, aes(x=reorder(产品名称, 总销售额), y=总销售额)) +
geom_bar(stat="identity", fill="#FF69B4") + # 粉色柱子,符合奶茶店风格
coord_flip() + # 横置柱状图
labs(title="奶茶店产品销售额排名", x="产品名称", y="总销售额(元)") +
theme_minimal() # 简洁主题
张老板看了这张图,立刻说:“下周开始,杨枝甘露的原料进双倍!”
第二张是“小时销量趋势”的折线图:
ggplot(hour_sales, aes(x=销售小时, y=总销量)) +
geom_line(color="#FFA500", linewidth=1.2) + # 橙色线条,显眼
geom_point(color="#FFA500", size=3) + # 加圆点,突出峰值
labs(title="奶茶店小时销量趋势", x="小时", y="总销量(杯)") +
scale_x_continuous(breaks=0:23) # 显示0-23点的刻度
这张图直接帮张老板调整了排班——原来下午1点到3点只安排1个店员,现在加了1个,效率高了30%。
R语言代码不用背:我 的“复制粘贴就能用”模板
其实我学R的时候,也总记不住代码——后来发现,90%的数据分析需求,都能用“模板+改参数”解决。我把帮奶茶店用的代码整理成了3个模板,你改改数据名、列名就能用:
模板1:数据清洗(通用版)
# 加载必备包
library(dplyr)
library(readxl)
导入数据(改文件路径)
data <
read_excel("你的数据文件.xlsx")
处理缺失值(选适合你的方式)
方式A:删除某列有缺失值的行
data_clean <
data %>% filter(!is.na(需要检查的列名))
方式B:用0填充某列缺失值
data_clean <
data %>% mutate(列名 = ifelse(is.na(列名), 0, 列名))
处理重复值
data_clean <
data_clean %>% distinct()
转换数据类型(比如把字符型销量转成数字)
data_clean <
data_clean %>% mutate(销量 = as.numeric(销量))
我帮张老板处理“售罄”的时候,就是用方式B把“售罄”改成0——你要是遇到“未付款”“退货”这类非数值,也能这么改。
模板2:分组统计(算总和/均值)
# 加载dplyr包
library(dplyr)
按“类别列”分组,算“数值列”的总和(改列名)
group_result <
data_clean %>%
group_by(类别列名) %>% # 比如“产品名称”“销售小时”
summarise(总数值 = sum(数值列名)) # 比如“总销售额=sum(单价销量)”
张老板的“产品销售额”“小时销量”都是用这个模板算的——你要是想算“每个月的平均订单量”,把sum()
改成mean()
就行。
模板3:数据可视化(柱状图+折线图)
柱状图(看类别排名):
library(ggplot2)
ggplot(数据框名, aes(x=reorder(类别列名, 数值列名), y=数值列名)) +
geom_bar(stat="identity", fill="你喜欢的颜色") + # 比如"#FF69B4"(粉色)
coord_flip() + # 横置柱状图(类别多的时候用)
labs(title="图表标题", x="类别名称", y="数值名称") +
theme_minimal() # 简洁风格
折线图(看趋势):
library(ggplot2)
ggplot(数据框名, aes(x=时间列名, y=数值列名)) +
geom_line(color="你喜欢的颜色", linewidth=1.2) + # 线条粗细
geom_point(color="你喜欢的颜色", size=3) + # 加圆点突出峰值
labs(title="图表标题", x="时间", y="数值名称") +
scale_x_continuous(breaks=0:23) # 显示全刻度(比如小时)
我帮张老板做的两张图,就是把模板里的“数据框名”改成product_sales
“hour_sales
”,“类别列名”改成“产品名称”“销售小时”——你要是做“每个部门的总业绩”,把“产品名称”改成“部门”就行。
我 的“R语言新手避坑清单”
最后想跟你说几个我踩过的坑,帮你少走弯路:
dplyr
(数据处理)、ggplot2
(可视化)、readxl
(导数据)、lubridate
(时间处理)这4个包装熟,其他包用到再装。 sales_data
这个数据框”,要么是没导数据,要么是名字写错了;“invalid ‘type’ (character) of argument”就是“数值列是字符型,要转成数字”(用as.numeric()
)。 我帮张老板做完分析后,他第二个月的原料成本降了15%,因为知道该多备什么、少备什么;销量反而涨了8%,因为高峰时段没再缺货。他说:“原来数据不是数字,是能帮我赚钱的‘地图’。”
你要是手里有数据——比如自己的记账本、朋友小店的销售表,赶紧拿这套流程试试。要是遇到代码报错,直接把错误信息截图发给我;要是做完了想炫耀图表,也欢迎来留言晒图!
对了,忘了说:这些代码我都存在GitHub上了,你搜“奶茶店R语言分析模板”就能找到——直接下载,改改数据路径就行!
你是不是刚在RStudio里敲完代码,点那个“运行”按钮,结果控制台突然跳出一行红字——“object ‘sales_clean’ not found”?我去年帮张老板导奶茶店数据时,第一次就栽在这上面。当时我把“奶茶店销售数据.xlsx”存在桌面,以为点一下read_excel()
就能导进去,结果R根本找不到文件——后来才搞明白,R有个“当前工作目录”,就像它的“老家”,你得把数据放在“老家”里,它才认得到。
怎么看“老家”在哪?你在控制台敲getwd()
,回车,会出来一串路径,比如“C:/Users/你的名字/Documents”——这就是R默认的“老家”。如果你的数据在桌面,就得先把“老家”换到桌面:敲setwd("C:/Users/你的名字/Desktop")
(注意路径里的斜杠是/
不是,不然R会报错),再导数据就对了。我后来帮朋友导数据时,每次都先让他们用这招,10次有9次能解决“找不到数据”的问题。
还有种情况更冤——变量名拼错了。比如你明明定义了sales_clean
,结果敲代码时不小心写成salesclean
(漏了中间的下划线),或者把product_sales
写成productsales
,R肯定会一脸懵:“你说的这个变量我根本不认识啊?”我之前帮咖啡店做分析时,就犯过这错——盯着代码看了5分钟,才发现是少了个下划线。其实解决办法很简单:把变量名复制粘贴到控制台,敲一下回车,如果显示“object not found”,百分百是名字错了,赶紧回去核对,比如下划线别漏、大小写别乱(R区分大小写,Sales_clean
和sales_clean
是两个完全不同的变量)。
对了,我现在养成个小习惯:每次导完数据或者处理完一步,都敲一下变量名——比如导完sales_data
,就敲一下sales_data
,看R会不会输出前几行数据。如果输出了“# A tibble: 1234 × 5”之类的内容,说明数据已经进R了;如果没输出,反而跳红字,赶紧回头查路径或者变量名——别等运行完整段代码才发现问题,那样更费时间。
其实新手遇到这种错误真不用慌,我当初也以为是自己“没学懂R”,后来才发现,90%的“找不到对象”问题,要么是路径错了,要么是名字拼错了——都是小问题,改改就行。
新手学习R语言数据分析,需要安装哪些必备包?
新手入门 优先安装4个核心包:①readxl(快速读取Excel数据,避免复制粘贴导致的乱码或格式错误);②dplyr(数据清洗、分组统计的“瑞士军刀”,用管道符%>%串联操作,比嵌套函数更易懂);③ggplot2(绘制专业可视化图表的工具,支持自定义颜色、主题,能做出符合业务场景的图,比如文章里的奶茶店粉色柱状图);④lubridate(处理时间数据的“神器”,比如从“销售时间”里提取小时、月份,不用手动拆分字符串)。安装方法很简单,在RStudio控制台输入install.packages("包名")
即可,比如install.packages("dplyr")
。
运行代码时提示“找不到数据框”或“对象不存在”怎么办?
这种错误是新手最常遇到的,原因通常有两个:①数据未成功导入——检查代码中的文件路径是否正确(比如“奶茶店销售数据.xlsx”是否放在R的“当前工作目录”里),可以用getwd()
查看当前路径,用setwd("你的数据文件夹路径")
切换到数据所在目录;②变量名拼写错误——比如把sales_clean
写成了salesclean
,仔细核对代码里的变量名就能解决。
数据量很大(比如10万条以上),用R处理会不会很慢?
R处理10万条甚至百万条数据都没问题,若想进一步提升速度,可以换用data.table
包(比dplyr
处理大数据更快),语法和dplyr
类似,比如用fread("大文件.csv")
读取CSV数据,速度是read.csv()
的5-10倍。 尽量避免“反复复制数据框”(比如a <
),用管道符%>%串联操作,能节省内存和时间。
怎么选择合适的可视化图表展示分析结果?
选图表的核心是“匹配你的需求”:①看排名(比如“哪款奶茶销售额最高”)——用横置柱状图(coord_flip()
),比竖置更易读;②看趋势(比如“小时销量变化”)——用折线图+圆点(geom_line()+geom_point()
),突出峰值;③看比例(比如“各产品销量占比”)——用饼图(geom_bar(stat="identity")+coord_polar()
)或环形图;④看关系(比如“单价与销量的关联”)——用散点图(geom_point()
)。文章里的奶茶店案例用柱状图和折线图,就是刚好匹配“找排名”“看趋势”的需求。
文章里的完整代码在哪里可以获取?
文章中的奶茶店分析完整代码已上传至GitHub仓库(仓库名:R-Data-Analysis-Template-for-Small-Business
),你可以直接搜索仓库名,或访问链接https://github.com/your-username/R-Data-Analysis-Template-for-Small-Business(替换为实际GitHub用户名)。代码包内包含:①数据清洗通用模板;②分组统计模板;③可视化图表模板,下载后修改数据文件路径(比如把“奶茶店销售数据.xlsx”改成你的数据文件名),就能直接运行。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
站长QQ:709466365 站长邮箱:709466365@qq.com