亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

R中的頻率計數

R中的頻率計數

千巷貓影 2019-07-31 10:49:46
R中的頻率計數這似乎是一個非?;镜腞問題,但我很感激答案。我有一個以下形式的數據框:col1    col2a   ga   ha   gb   ib   gb   hc   i我想將它轉化為計數,所以結果將是這樣的。我嘗試過使用table()函數,但似乎只能獲得一列的計數。    a   b   cg   2   1   0h   1   1   0i   0   1   1我怎么在R?
查看完整描述

2 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

我不太確定你用過什么,但table對我來說效果很好!


這是一個可重復性最小的例子:


df <- structure(list(V1 = c("a", "a", "a", "b", "b", "b", "c"), 

                     V2 = c("g", "h", "g", "i", "g", "h", "i")), 

                .Names = c("V1", "V2"), class = "data.frame", 

                row.names = c(NA, -7L))

table(df)

#    V2

# V1  g h i

#   a 2 1 0

#   b 1 1 1

#   c 0 0 1

筆記:


嘗試table(df[c(2, 1)])(或table(df$V2, df$V1))交換行和列。

使用as.data.frame.matrix(table(df))得到一個data.frame作為輸出。(as.data.frame將創建一個長的data.frame,而不是一個你想要的相同輸出格式)。


查看完整回答
反對 回復 2019-07-31
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

使用f@Ananda你可以使用dcast


library(reshape2)


> dcast(f, V1~V2)

Using V2 as value column: use value.var to override.

Aggregation function missing: defaulting to length

  V1  g  h  i

1 a   2  1  0

2 b   1  1  1

3 c   0  0  1

但是,我寫這篇文章只是為了以后你可能需要的不僅僅是table(在這種情況下,這是最簡單的正確答案),例如:


set.seed(1)

f$var <- rnorm(7)


> f

  V1 V2        var

1 a   g -0.6264538

2 a   h  0.1836433

3 a   g -0.8356286

4 b   i  1.5952808

5 b   g  0.3295078

6 b   h -0.8204684

7 c   i  0.4874291


> dcast(f, V1~V2, value.var="var", fun.aggregate=sum)

  V1          g          h         i

1 a  -1.4620824  0.1836433 0.0000000

2 b   0.3295078 -0.8204684 1.5952808

3 c   0.0000000  0.0000000 0.4874291


查看完整回答
反對 回復 2019-07-31
  • 2 回答
  • 0 關注
  • 1849 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號