首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一次多柱Kruskal-Wallis检验

一次多柱Kruskal-Wallis检验
EN

Stack Overflow用户
提问于 2019-07-29 22:35:04
回答 2查看 927关注 0票数 0

这听起来可能有点简单,但我无法得到答案。

我在R中有一个数据集,行中有26个样本,列中有许多变量(>20)。它们中的一些是分类的,所以我需要做的是根据每个分类变量对每个数值变量执行Kruskal Wallis检验,所以我这样做:

代码语言:javascript
复制
env_fact <- read.csv("environ_facts.csv")

kruskal.test(env_fact-1 ~ Categorical_var-1,  data=env_fact)

但是这样我只能一个接一个地对数值变量进行测试,这很麻烦。

有没有办法一次完成所有数值变量的Kruskal-Wallis检验?我可以通过每个分类变量重复它,因为我只有4个,但对于数字1,我有超过20个!

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2019-07-29 23:40:01

由于我没有数据集的样本,我只能回答“理论上”。

首先,您需要识别哪些是数值列。执行此操作的方法如下:

代码语言:javascript
复制
df = tibble(x = rnorm(10), y = rnorm(10), z = "a", w = rnorm(10))
NumericCols = sapply(df, function(x) is.numeric(x))
df_Numeric = df[, Types == TRUE]

现在获取dfdf_Numeric的数字部分,并将函数blabla一次应用于每一列:

代码语言:javascript
复制
sapply(df_Numeric, function(x) blabla(x))
票数 0
EN

Stack Overflow用户

发布于 2019-07-31 17:24:53

非常感谢,欧姆里。

与一位同事合作,我们得出了一个与您的解决方案不完全不同的解决方案:

代码语言:javascript
复制
my.variables <- colnames(env_fact)
for(i in 1:length(my.variables)) {
    if(my.variables[i] == 'Categorical_var') {
        next
    } else {
        kruskal.test(env_fact[,i], env_fact$Categorical_var)
    }
}

但是,我们还不能在屏幕上打印/获得由“Categorical_var”分析的每个“my.variables”的结果的输出。作为一个整体,我们只能得到所有'my.variables‘的结果。

有什么想法吗?

非常感谢

附言:我的数据是这样的:

代码语言:javascript
复制
Sample,Nunatak,Slope,Altitude,Depth,Fluoride,Acetate,Formiate,Chloride,Nitrate
m4,1,1,1,1,0.044,0.884,0.522,0.198,0.021
m6,1,1,1,2,0.059,0.852,0.733,0.664,0.038
m7,1,1,1,3,0.082,0.339,1.496,0.592,0.034
m8,1,1,2,1,0.112,0.812,2.709,0.357,0.014
m10,1,1,2,2,0.088,0.768,2.535,0.379,0
m11,1,1,3,1,0.101,0.336,4.504,0.229,0
m13,1,1,3,2,0.092,0.681,1.862,0.671,0.018
m14,1,2,2,1,0.12,1.055,3.018,0.771,0
m16,1,2,2,2,0.102,1.019,1.679,1.435,0
m17,1,2,2,3,0.26,0.631,0.505,0.574,0.008

其中Nunatak、坡度、高度和深度是分类的,其余的是数字的。希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57256028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档