【发布时间】:2018-07-17 18:37:39
【问题描述】:
我有一个包含几列的data.frame,想根据变量的组合过滤低频数据。该示例就像在性别变量中具有男性/女性和在胆固醇变量中具有高/低一样。那么我的数据框会是这样的:
set.seed(123)
Sex = sample(c('Male','Female'),size = 20,replace = TRUE)
Age = sample(c('Low','High'),size = 20,replace = TRUE)
Index = 1:20
df = data.frame(index = Index,Sex=Sex,Age=Age)
df
index Sex Age
1 1 Male High
2 2 Female High
3 3 Male High
4 4 Female High
5 5 Female High
6 6 Male High
7 7 Female High
8 8 Female High
9 9 Female Low
10 10 Male Low
11 11 Female High
12 12 Male High
13 13 Female High
14 14 Female High
15 15 Male Low
16 16 Female Low
17 17 Male High
18 18 Male Low
19 19 Male Low
20 20 Female Low
现在我想过滤频率高于3的Sex/Age的组合
table(df[,2:3])
Age
Sex High Low
Female 8 3
Male 5 4
换句话说,我想保留女性高、男性低和男性高的指数。
注意 1)我的数据框有几个变量(不像上面的例子)和 2)我确实 不想使用任何第三个 R 包和 3)我希望它快。
【问题讨论】:
-
有充分的理由,为什么你只想使用 Base-R?否则我有一个漂亮而优雅的问题要问你。
-
我使用多核功能,很难将第三个包传递到程序中
-
df %>% group_by(Sex, Age) %>% mutate(occurences = n()) -
它在 R 中吗?什么是 R 包?哦 dplyr 是一个有问题的包,我已经尝试过了
-
好的,所以我在下面发布了一个 Base-R 答案。一个附录:你说你希望它很快。如果这真的很重要,你应该三思而后行。 Dplyr 更快,如果你真的需要它更快,data.table 是你的首选。
标签: r