2017-03-27 2 views
2

를 사용하여 감소 후 데이터를 집계 I가 다음과 같은 데이터 세트 :주파수 카운트

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(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()가 < = 6 인 모든 숫자는 table() 함수가 데이터에서 실행될 때 아래와 같이 표시됩니다.

2 3 4 5 6 8 
35 54 41 19 15 10 
() 표를 얻기 위해 그것을 사용 후

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

을 그리고 :

내가 노력하고 무엇. 이것은 정말 나쁜 작업입니다.

다른 가장 짧은 방법이있을 수 있습니까?

+1

'table (df $ var) [table (df $ var)> 6]' – Kristofersen

+0

10 on 10 ... 나는 또한 s에 가까웠다. 비슷합니다. ... :) 감사합니다. –

답변

3

현재하고있는 일은 완벽합니다. 그러나 코드를 줄이려면 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 

데이터

x = c(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) 
+0

당신의 작업은 멋지지만, 방금 알게되었습니다. \t 크리스토퍼슨의 솔루션은 여전히 ​​더 탁월합니다. (table df $ var) [table (df $ var)> 6]'동의 하시겠습니까? 어쨌든 고마워, –

+0

. 나는 당신의 일에 감사한다. –

+1

@MadhuSareen, Kristofersen의 해답에서, 당신은 정말로 필요하지 않은'table'을 두 번 실행하고있다. 작은 데이터 세트에서는 문제가되지 않습니다. –

1

이 너무 Filter 기능에 대한 좋은 후보이다. ("x"는 @의 데시벨의 대답에서이다)

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