使用频率计数减少数据后对数据进行制表

时间:2017-03-27 19:36:27

标签: r

我有以下数据集:

5   3   3   5   10  10  3   8   2   12  8   6   2   5   6   5   10  4   3   5   4   3   3   5   8   3   5   6   6   1   10  3   6   6   5   8   3   4   3   4   4   3   2.5 1   4   2   2   3   5   10  4   4   6   3   2   3   8   3   4   4   3   3   4   8   4   4   2   4   4   3   2   10  6   3   7   3   5   3   1   4   3   4   3   4   4   2   3   2   4   7   4   6   3.5 3.5 5   3   4   3   5   3   1.5 2.5 3   7   2   5   3   4   2   4   5   3   4   5   4.5 4   6   3   2   1   3   2   2   3   4   6   2   4   2   3   6   1.5 3   3   1   4   3   3   2   3   2   2   6   3   15  1   4   5   2   6   2   4   8   2   8   4   4   4   3   8   4   4   8.5 3   2   7   0.5 3   3   3   2   3   2   4   5   6   2   3.5 3   3   2   2   2.5 2   2   5   2   8   2   4   3   3   2   7   2   4   2   4   4   3   2.5 3   3   3   5

函数table()返回以下值:

table(df$var)

0.5   1 1.5   2 2.5   3 3.5   4 4.5   5   6   7   8 8.5  10  12  15 
  1   6   2  35   4  54   3  41   1  19  15   5  10   1   6   1   1 

我想要做的是省略count()为&lt; = 6的所有这些数字,这样当table()函数对数据运行时,它将返回如下所示的结果:< / p>

2    3    4    5   6   8 
35  54   41   19  15  10

我在尝试什么:

test <- as.data.frame(table(df$var))
test[test$Freq > 6,2]

然后用它来获取表格()。 这真是糟糕的工作。

可以有任何其他最简短的方法,也许是单线程?

2 个答案:

答案 0 :(得分:3)

您目前正在做的事情非常好。但是,如果您想缩短代码,可以使用const handleStatus = (ref, error = "Unknown error") => { return new Promise((resolve, reject) => { ref.child("status").on("value", snapshot => { const status = snapshot.val(); if (status === SUCCESS) { ref.child("status").off(); resolve(error); // is this really what you mean? } else if (status !== PENDING) { reject(error); } }); }); }; 来评估新的with,方法是考虑初始data.frame。我会尽量避免两次运行data.frame,因为它是多余的。

table

数据

with(data.frame(table(x)), data.frame(x = x[Freq>6], Freq = Freq[Freq>6]))
#  x Freq
#1 2   35
#2 3   54
#3 4   41
#4 5   19
#5 6   15
#6 8   10

答案 1 :(得分:1)

这也是Filter函数的一个很好的候选者:

Filter(function(y) y > 6, table(x))
## x
##  2  3  4  5  6  8 
## 35 54 41 19 15 10 

(“x”来自@ d.b的回答。)