首页 文章

创建子集数组

提问于
浏览
1

所有 .

长话短说:

我有一个包含60000多个条目的数据集 .

一个变量基于个体来自(位置)的位置,具有大约10个不同的类别 . 另一个是总体满意度,得分为1到10分 .

但是,所有类别都包含“乡村”一词或“城市”一词 .

我想要做的是比较位置变量中包含单词Rural的所有情况的总体平均值,以及位置变量中包含单词Urban的所有情况 .

我使用了一种解决方法,只是在Excel的初始数据集中创建一个额外的列,在位置列中找到“乡村”或“城市”一词,并根据找到的内容返回“乡村”或“城市”,但我确定在那里必须是一种严格使用R的方法 .

这可能吗?谢谢!

1 回答

  • 2

    创建一些虚拟数据:

    set.seed(1)
    foo <- data.frame(
      loc=sample(c(paste0("Rural",LETTERS[1:5]),paste0(LETTERS[10:14],"Urban")),
        100,replace=TRUE),
      xx=rnorm(100))
    

    现在听起来你希望 grepl() grep为你的关键字, by() 来计算按关键字的方式:

    > with(foo,by(xx,grepl("Urban",loc),mean))
    grepl("Urban", loc): FALSE
    [1] -0.07220176
    -------------------------------
    grepl("Urban", loc): TRUE
    [1] 0.04159463
    

    或许你真的想要一个t检验:

    > with(foo,t.test(xx~grepl("Urban",loc)))
    
            Welch Two Sample t-test
    
    data:  xx by grepl("Urban", loc)
    t = -0.60245, df = 97.076, p-value = 0.5483
    alternative hypothesis: true difference in means is not equal to 0
    95 percent confidence interval:
     -0.4886860  0.2610932
    sample estimates:
    mean in group FALSE  mean in group TRUE 
            -0.07220176          0.04159463
    

相关问题