创建子集数组

时间:2015-04-29 14:47:05

标签: r

所有

长话短说:

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

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

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

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

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

这可能吗?谢谢!

1 个答案:

答案 0 :(得分: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