You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CSV数据读入R变量以适配Mann-Whitney U检验?

解决Mann-Whitney U检验中CSV导入数据类型不匹配的问题

问题原因

你用read.csv()读取CSV文件后得到的是数据框(data.frame),而wilcox.test()要求输入必须是数值向量(numeric vector)——这就是报错'x' must be numeric的核心原因。直接用c()创建的变量是数值向量,所以能正常运行。

你的CSV文件是单行逗号分隔的数值(比如3,5,1,4,3,5),read.csv()会将其解析为1行多列的数据框,而非你需要的一维向量。

解决方案

方案1:用scan()直接读取为数值向量

scan()可以直接读取逗号分隔的数值并返回向量,是最直接的方法:

group1 <- scan("/Users/..../group1.csv", sep = ",")
group2 <- scan("/Users/..../group2.csv", sep = ",")

方案2:将read.csv()读取的数据框转换为向量

如果坚持使用read.csv(),可以用unlist()将数据框转换为一维向量:

group1 <- unlist(read.csv("/Users/..../group1.csv", header = FALSE, colClasses = "integer", sep=","))
group2 <- unlist(read.csv("/Users/..../group2.csv", header = FALSE, colClasses = "integer", sep=","))

修改后的完整脚本

以scan()版本为例:

# 读取CSV为数值向量
group1 <- scan("/Users/..../group1.csv", sep = ",")
group2 <- scan("/Users/..../group2.csv", sep = ",")

# 执行Mann-Whitney U检验
test_result <- wilcox.test(group1, group2, exact = FALSE)

# 输出检验结果
print(test_result)
cat("U statistic:", test_result$statistic, "\n")
cat("P-value:", test_result$p.value, "\n")

# 计算合并数据的秩
combined_data <- c(group1, group2)
ranks <- rank(combined_data)
cat("Ranks:", ranks, "\n")

内容的提问来源于stack exchange,提问作者Morkus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 05:12:38