※ 引述《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