我有一大組數據保存在一個長列表中。這是第一個六個記錄一個例子:計算R中的頻率和項數的比率?
A <- list(c("JAMES","CHARLES","JAMES","RICHARD"),
c("JOHN","ROBERT","CHARLES"),
c("CHARLES","WILLIAM","CHARLES","MICHAEL","WILLIAM","DAVID","CHARLES","WILLIAM"),
c("CHARLES"),
c("CHARLES","CHARLES"),
c("MATTHEW","CHARLES","JACK"))
我想計算與每個唯一術語中的每個記錄,每個術語出現在記錄的數量發生的相對頻率的總和的比率。
我計算的分子,即與每個獨特的項發生在每一個記錄,這樣的相對頻率的總和:
> B <- lapply(A, function(x)table(x)/length(x))
> aggregate(unlist(B), list(names(unlist(B))), FUN=sum)
Group.1 x
1 CHARLES 3.2916667
2 DAVID 0.1250000
3 JACK 0.3333333
4 JAMES 0.5000000
5 JOHN 0.3333333
6 MATTHEW 0.3333333
7 MICHAEL 0.1250000
8 RICHARD 0.2500000
9 ROBERT 0.3333333
10 WILLIAM 0.3750000
我不知道如何計算分母,即數每個詞出現在記錄中,正確儘管如此。我只知道如何計算數據集合中出現的每個學期數:
> table(unlist(A))
CHARLES DAVID JACK JAMES JOHN MATTHEW MICHAEL RICHARD ROBERT WILLIAM
9 1 1 2 1 1 1 1 1 3
但多次出現的一些術語記錄中,我想,爲了得到這樣的結果,省略這些重複:
CHARLES DAVID JACK JAMES JOHN MATTHEW MICHAEL RICHARD ROBERT WILLIAM
6 1 1 1 1 1 1 1 1 1
這怎麼能實現?
根據我的例子,我想獲得一個類似的最終輸出:
Group.1 x
1 CHARLES 0.5486111
2 DAVID 0.1250000
3 JACK 0.3333333
4 JAMES 0.5000000
5 JOHN 0.3333333
6 MATTHEW 0.3333333
7 MICHAEL 0.1250000
8 RICHARD 0.2500000
9 ROBERT 0.3333333
10 WILLIAM 0.3750000
所以,我怎麼能計算出每個詞出現在記錄的數量,即分母,和比自己?
非常感謝您提前考慮!
這正是我一直在尋找!非常感謝你! – user0815