当我研究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)
答案 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