2017-05-23 4 views
1

私のデータセットtestには、startendの2つの列に基づいて頻度表を生成したいと思います。私の目的は、たとえそれが両方の列に現れたとしても、行ごとに一度だけユニークな文字を数えることです。たとえば、最初の行では、「C」は1つだけとカウントされます。行4では、「B」は一度カウントし、「A」は同じではないため、一度カウントする必要があります。私はunique()関数をどういうふうに使うべきか知っていますが、それをtable()とどのように組み合わせて、繰り返しの文字を1行に数える頻度テーブルを生成するのかはわかりません(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ループなので、使用には本当に効率的な機能ではありませんが、この場合には正常に動作します。

関連する問題