首页 > 解决方案 > 如何选择现有列并使用函数运行统计测试?

问题描述

我有一个数据框(df)。要创建一个新的数据框(df1),我想从原始数据框(df)中选择列。使用 df1,我想省略 NA 并运行统计测试。最后,我希望这个过程作为一个函数。

library(dplyr)

#create example dataframe
A<-c(1,2,1,2,1,2,1)
B<-c(5,2,4,1,5,1,NA)
D<-c(99,99,88,88,99,99,88)
E<-c(10,10,20,10,20,20,20)
df <- data.frame(A,B,D,E)

#Single step process works
df1 <- dplyr::select(df, A, B)
df1 <- na.omit(df1)

wilcox.test(df1$B~df1$A)

#Function does not work
lazy <- function(x,y,z){
  x <- dplyr::select(df, y, z)
  x <- na.omit(x)

  e <- wilcox.test(x$z~x$y)
  return(e)
}
lazy(df2,A,E)

错误:inds_combine(.vars, ind_list) 中的错误:位置必须介于 0 和 n 之间

标签: r

解决方案


lazy <- function(x, y, z){
    x <- df[c(y, z)]
    x <- na.omit(x)

    e <- wilcox.test(x[[z]]~x[[y]])
    return(e)
}
lazy(df, "A", "B")

推荐阅读