🗒️FIT 1043 ASGN 2

Cs, Go!

FIT 1043|2025-10-14|最后更新: 2025-11-11|
Place
人员

Part A

🧩 A1.1 查看文件大小


第9周内容
目标: 查出 FIT1043_Dataset.gz 的大小(MB)
命令:
解释:
  • ls -lh:显示详细信息,h 表示以 MB/KB 显示。
  • du -h:显示文件占用空间大小。
 

🧩 A1.2 确定文件分隔符


第10周内容
目标: 找出 FIT1043_Dataset.gz 文件中用来分隔列的符号。
命令:

解释:
  • cat:读取文件内容。
  • |:把上一步的输出传给下一个命令。
  • gunzip:解压缩(但只是读取,不会真正解压到磁盘)。
  • head:只显示前 10 行,方便查看格式。

分析结果:
你会看到类似这样的输出:
可以看到各列之间使用 逗号(,) 分隔。
 

🧩 A1.3 统计文件行数


第10周内容
目标: 计算 FIT1043_Dataset.gz 文件共有多少行。
命令:

解释:
  • cat:读取压缩文件。
  • gunzip:在不解压的情况下读取内容。
  • |:把解压后的内容传给下一个命令。
  • wc -l:统计行数(每一条推文是一行)。

输出示例:
表示共有 1,600,000 行数据
 

🧩 A2.1 统计唯一用户数量


第10周内容
目标:
找出数据集中有多少个不同的用户(user 列)。
命令:

解释:
  • awk -F',' '{print $5}'
    • 以逗号为分隔符,打印第 5 列(用户列)。
  • sort:将用户名字排序(uniq 需要相邻重复才能识别)。
  • uniq:去除重复的用户名。
  • wc -l:统计唯一用户名的数量。

输出示例:
说明数据集中有 65,789 个不同用户
 

🧩 A2.2 推文日期范围(假设已按时间排序)


第10周内容
目标:
找出推文的最早日期和最晚日期。
命令:

解释:
  • awk -F',' '{print $3}':提取第 3 列(日期列)。
  • head -1:显示第一行(最早日期)。
  • tail -1:显示最后一行(最晚日期)。
    • 👉 因为题目说明数据按时间顺序排列,所以可以直接取首尾。

输出示例:
 

🧩 改进版:A2.3 按真实时间排序(年 → 月 → 日)


需要自己网上搜索
目标:
在数据无序时,按真实日期顺序找出最早和最晚日期。
命令:

解释:
  • 考虑到英文中如果按照默认的sort 排序,则
    • 四月(Apr) < 八月(Aug) < 十二月(Dec) - 输出顺序混乱
  • 需要使用 sort command中的K选项

输出示例:
 

A2.4

🧩 A2.4a 搜索含 “France” 的推文(忽略大小写)


第9周内容
目标:
统计所有包含 “France” 一词的推文(无论大小写)。
命令:

解释:
  • grep -i "france":搜索所有包含 “france” 的行,i 忽略大小写。
  • wc -l:统计匹配到的行数(即推文条数)。

输出示例:
表示共有 253 条推文 提到了 “France”。

🧩 A2.4b 搜索“非常规拼写”(非全小写/全大写/首字母大写)


需要自己网上搜索
目标:
找出那些拼写不是 franceFranceFRANCE 的推文,例如:
fRance, frAncE 等。
命令:
解释:
  • 第一层 grep -i "france":选出包含 france 的所有行。
  • 第二层 grep -v:排除标准三种写法(只保留非常规拼写)。
 

🧩 A3.1 “coffee” 在正/负面推文中的数量

第10周内容

目标:
统计有“coffee”一词的推文中,
  • target=0 → 负面
  • target=4 → 正面
    • 的数量。

命令:
负面(target=0):
正面(target=4):

解释:
  • grep -i "coffee":找到所有包含 “coffee” 的推文(忽略大小写)。
  • grep ....:筛选以 “0,” 开头的行(负面推文),筛选以 “4,” 开头的行(正面推文)。
  • wc -l:统计行数(即条数)。

输出示例:
说明负面推文 125 条,正面推文 312 条。
 

🧩 A3.2 “work” 在正/负面推文中的数量

同 A3.1 复制粘贴,修改一下搜索的词就好了
 
 
 

🧩 A3.3 生成结果文件 sentiment_comparison.csv

需要自己网上搜索

目标:
把 “coffee” 和 “work” 的正负面统计结果保存成 CSV 文件,格式如下:

💻 命令示例


🧠 解释:

  • echo:打印一行文本。
  • 第一行写入表头:Keyword,Negative,Positive
  • 第二、三行写入统计结果。
  • $(...):命令替换,把括号中的命令结果插入到输出里。
  • >>:追加写入(不会覆盖上一行)。

执行后查看:
你会看到:
 

🧩 A3.4 用课堂方法绘制条形图

第八周内容 + 需要自己网上搜索

目标:
用 R 读取 sentiment_comparison.csv,并绘制 “coffee / work” 在正负面情绪下的数量对比条形图。
由于这个代码 每个人因该都不一样,这里就不展示了。让ChatGPT来来生成代码。自己解释得出来就ok
 

🧩 A3.5 图表分析与解释(基于 CSV 数据)


假设我们已经运行了上一步(A3.4)的 R 代码,并得到了并排条形图(Negative / Positive 对比)
🧠 图表解读说明
从条形图可以观察到以下几点:
  1. 整体趋势
  1. 含义分析
  1. 结论
 

🧩 A3.6 找出最常出现的 10 个单词(排除停用词)

目标:
在正面 (target=4) 与负面 (target=0) 推文中,找出最常出现的 10 个词(忽略大小写,并去除停用词)。
注意事项:
  1. 忽略大小写,并去除停用词
  1. 不需要修改标点符号
  1. 单独的空格不算单词
  1. 注意需要按照频率从高到低
 

🧩 A4.1 提取包含国家名的推文时间戳

目标:
从数据集中找到包含某个国家名(例如 Australia)的推文,
并把这些推文的 日期列(第3列) 提取出来保存为 timestamps.txt
推荐方法:
使用 grep -iw 再配合 awk
或者
grep + awk 两层过滤
 

🧩 A4.2 在 R 中读取并转换时间格式

目标:
  • 读取 timestamps.txt
  • 将每行字符串(如 “Mon Apr 06 23:49:29 PDT 2009”)转换为 R 能识别的时间对象
⚠️
如果系统使用的是中文语言,需要转换成英文才能正常识别(多么痛的领悟)
神秘代码一键转换:Sys.setenv(TZ = "America/Los_Angeles")
转换对标:"%a %b %d %H:%M:%S %Z %Y”
官方文件:strptime function - RDocumentation
 

🧩 A4.3 计算每日推文数量 + 绘制直方图

目标
  • 使用 R 统计每天的推文数量
  • 绘制一个显示每日 tweet 数量的直方图(histogram)
主要的几个函数:
as.Daatetablebarplot
 
Loading...