※ 引述《Tampa (光芒)》之銘言:
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 讀入csv檔
: 表格形式如下
: x25 x26 x27
: 6 h g
: 7 g h
: 8
: 9 g h
: 10 h g
: 想要統計g 跟h的次數 並做成圖
: 因為圖形好像不能直接計算字元
: 所以要先把字元次數轉成數字
: [程式範例]:
: 大家可以看到 表格總共有x.25 x.26 x.27三行
: 底下 分別會有g ,h ,跟空格
: 現在想要做
: 1.統計整個表格共有幾個g 幾個h
: 2.每一行 總共有幾個g 幾個h
: 已用過table等語法 但還是無法計算出來
: 希望呈現的形式 是變成y<-(g的次數,h的次數)
: 然後再來畫圖
: 感謝大家
# 一般作法
dat <- data.frame(x1 = c("h", "g", "", "g", "h"),
x2 = c("", "h", "h", "", "g"),
x3 = c("g", rep("", 4)),
stringsAsFactors = FALSE)
table(factor(unlist(dat), levels = c("g", "h")))
# g h
# 4 4
sapply(dat, function(x){
table(factor(x, levels = c("g", "h")))
})
# x1 x2 x3
# g 2 1 1
# h 2 2 0
# dplyr作法
library(dplyr)
dat <- data.frame(x1 = c("h", "g", "", "g", "h"),
x2 = c("", "h", "h", "", "g"),
x3 = c("g", rep("", 4)),
stringsAsFactors = FALSE)
dat2 <- dat %>% mutate_each(funs(factor(., levels = c("g", "h"))))
# 1. 統計整個表格共有幾個g 幾個h
table(unlist(dat2))
# g h
# 4 4
# 2. 每一行 總共有幾個g 幾個h
dat2 %>% sapply(table)
# x1 x2 x3
# g 2 1 1
# h 2 2 0