我有一个包含以下数据的R数据框“internet”:
> internet Time Domain Category File_Type 1 1.9 google.com News_Media html 2 2.0 google.com News_Media css 3 2.0 google.com News_Media jpg 4 2.1 google.com News_Media jpg 5 4.0 facebook.com Social html 6 4.0 facebook.com Social jpg 7 4.1 facebook.com Social css 8 5.9 bbc.co.uk News_Media html 9 6.0 bbc.co.uk News_Media css 10 6.0 bbc.co.uk News_Media jpg 11 6.1 bbc.co.uk News_Media jpg 12 6.0 facebook.com Social html 13 6.0 facebook.com Social jpg 14 6.1 facebook.com Social css
我想创建这些数据的摘要,如下所示,尽管我很难找到正确的方法来做到这一点。
Domain Frequency Total Percentage bbc.co.uk 4 28.57143 facebook.com 6 42.85714 google.com 4 28.57143
我可以使用以下方式生成域名因子:
domains <- tapply(internet$Domain, internet$Domain, FUN=length)
和totalPercentage使用的因子:
totalPercentage <- (domain/nrow(internet))*100
但我不太确定如何将这些加入到一个摘要中。
提前感谢大家的时间和帮助
答案 0 :(得分:7)
这个怎么样:
multi.fun <- function(x) {cbind(freq = table(x), percentage = prop.table(table(x))*100)}
multi.fun(proxy$Domain)
答案 1 :(得分:2)
如果您安装了epicalc软件包,则可以使用?codebook进行此操作。考虑一下:
proxy <- read.table(text="Row Time Domain Category File_Type
1 1.9 google.com News_Media html
2 2.0 google.com News_Media css
3 2.0 google.com News_Media jpg
4 2.1 google.com News_Media jpg
5 4.0 facebook.com Social html
6 4.0 facebook.com Social jpg
7 4.1 facebook.com Social css
8 5.9 bbc.co.uk News_Media html
9 6.0 bbc.co.uk News_Media css
10 6.0 bbc.co.uk News_Media jpg
11 6.1 bbc.co.uk News_Media jpg
12 6.0 facebook.com Social html
13 6.0 facebook.com Social jpg
14 6.1 facebook.com Social css", header=T)
library(epicalc)
codebook(proxy)
... (output skipped)
==================
Domain :
Frequency Percent
bbc.co.uk 4 28.6
facebook.com 6 42.9
google.com 4 28.6
... (output skipped)
答案 2 :(得分:0)
马丁的答案正是我所寻求的。为了便于阅读,请在下方略微更改格式的百分比。
multi.fun <- function(x) {
cbind(freq = table(x),
percentage = round(prop.table(table(x))*100, 2))
}
multi.fun(proxy$Domain)