R新手导入Excel数据后计算统计量、筛选数据及绘图等作业问题求助
R作业操作指引
前置处理:解决matrix格式无法计算均值的问题
R中矩阵要求所有元素数据类型统一,若数据集包含字符型列,age/height/weight三列会被自动转为字符型导致计算报错,先执行以下代码转换格式:
# 将矩阵转为数据框,把your_matrix替换为你导入时自定义的矩阵变量名 df <- as.data.frame(your_matrix, stringsAsFactors = FALSE) # 将三列目标列转为数值类型,列名需和你实际数据集的列名完全一致(R区分大小写) df$age <- as.numeric(df$age) df$height <- as.numeric(df$height) df$weight <- as.numeric(df$weight)
1. 计算age、height、weight的均值与标准差
# na.rm=TRUE参数会自动跳过缺失值,无缺失值也不影响运行 # age指标 age_mean <- mean(df$age, na.rm = TRUE) age_sd <- sd(df$age, na.rm = TRUE) # height指标 height_mean <- mean(df$height, na.rm = TRUE) height_sd <- sd(df$height, na.rm = TRUE) # weight指标 weight_mean <- mean(df$weight, na.rm = TRUE) weight_sd <- sd(df$weight, na.rm = TRUE) # 打印输出结果 cat("age均值:", age_mean, " 标准差:", age_sd, "\n") cat("height均值:", height_mean, " 标准差:", height_sd, "\n") cat("weight均值:", weight_mean, " 标准差:", weight_sd, "\n") # 也可执行以下代码一键查看全数据集汇总信息 summary(df)
2. 统计各年龄分组的吸烟者数量
# 假设吸烟列列名为smokers,年龄分组列名为age.level,和作业标注字段一致可直接运行 table(df$age.level, df$smokers) # 输出结果行对应年龄分组,列对应是否吸烟,交叉位置数值为对应分组人数
3. 筛选吸烟且体重小于100kg的母亲并统计人数
# 若你数据集里吸烟者的取值为"Yes"/1/TRUE,把下面代码里的"是"替换为对应取值 target_df <- df[df$smokers == "是" & df$weight < 100, ] # 输出符合条件的人数 nrow(target_df)
4. 绘制直方图
# 示例为绘制年龄分布直方图,替换df$age为其他列名即可绘制对应变量的直方图 hist(df$age, main = "年龄分布直方图", xlab = "年龄", col = "lightblue")
常见报错排查
- 提示
object 'xxx' not found:检查变量名/列名拼写、大小写是否和实际一致 - 计算均值返回NA:执行
str(df)查看列类型,age/height/weight需为num(数值)类型,重新执行前置处理的类型转换代码即可
内容的提问来源于stack exchange,提问作者lindslinds
相关产品推荐
相关产品推荐

