使用条件删除R中组类别中的观察值

时间:2017-04-17 10:56:11

标签: r

当我研究R时,我有了新的问题。你能告诉我,我有货物类别。每个类别的商品都有价格。是否可以在R中写字符串,这样,如果观察值超过该商品类别中的50万以上的平均值,那么这个障碍。将从分析中删除。 I.E,我需要从所有商品类别(分组变量)中删除观察值,其中的值超过该组的平均值50万。

data = read.table(textConnection("
cat price
1   100000
1   200000
1   300000
1   400000
1   1000000
2   100000
2   200000
2   50000
2   100000
2   1000000
2   2000000
"),head=TRUE)

3 个答案:

答案 0 :(得分:4)

使用setResult(RESULT_OK) //or RESULT_CANCEL finish();

base

结果:

subset(data,!data$price>(ave(mydata$price,mydata$cat)+500000))

答案 1 :(得分:1)

使用dplyr

library(dplyr)

data %>%
  group_by(cat) %>%
  filter(price - mean(price) <= 500000)

结果:

Source: local data frame [9 x 2]
Groups: cat [2]

    cat   price
  <int>   <int>
1     1  100000
2     1  200000
3     1  300000
4     1  400000
5     2  100000
6     2  200000
7     2   50000
8     2  100000
9     2 1000000

答案 2 :(得分:1)

使用data.table,我们将'data.frame'转换为'data.table'(setDT(data)),按'cat'分组,我们将Subset of Data.table的行子集({ {1}})使用逻辑条件

.SD

或者我们可以使用行索引(library(data.table) setDT(data)[, .SD[(price - mean(price)) <= 500000], cat]

.I