2017-05-23 5 views
1

내 데이터 세트 test에 두 개의 열 (startend)을 기반으로 빈도 테이블을 생성하고 싶습니다. 내 목표는 행마다 한 번만 고유 한 문자를 계산하는 것입니다. 예를 들어, 첫 번째 행에서 "C"는 하나로서 만 계산되어야합니다. 4 행에서 "B"는 한 번 계산해야하며 "A"는 같지 않으므로 한 번 계산해야합니다. 나는 unique() 함수를 어떻게 든 사용해야한다고 알고 있지만, table()과 결합하여 하나의 행에 반복되는 문자를 계산하는 빈도 테이블을 생성하는 방법 (NA 값은 생략해야 함)을 조합하는 방법을 잘 모릅니다. 모든 제안을 부탁드립니다.행당 고유 변수가있는 여러 열의 빈도 테이블

> test 
    start end 
1  C C 
2  A <NA> 
3 <NA> <NA> 
4  B A 
5  A A 
6 <NA> A 
7 <NA> B 
8 <NA> C 
9  A <NA> 
10  C C 

다음 테이블의 출력은 다음과 같아야합니다

> output 
    station Freq 
1  A 5 
2  B 2 
3  C 3 

그리고 테스트 데이터 :이 방법에 대해

> dput(test) 
structure(list(start = c("C", "A", NA, "B", "A", NA, NA, NA, 
"A", "C"), end = c("C", NA, NA, "A", "A", "A", "B", "C", NA, 
"C")), .Names = c("start", "end"), row.names = c(NA, -10L), class = "data.frame") 

답변

4

를?

output<- table(unlist(apply(test, 1, unique))) 
output 

A B C 
5 2 3 

apply 그것은 영광 for 루프입니다,하지만이 경우 잘 작동하기 때문에, 사용하기 정말 효율적으로 기능하지 않습니다.