R计算具有频率分布的文件的均值,中值,方差

mar*_*ner 4 statistics r

我对R工具很新,我的问题可能有点太明显了.

我有一个包含以下数据的文件:

Score     Frequency

 100         10

 200         30

 300         40
Run Code Online (Sandbox Code Playgroud)

如何阅读此文件并计算均值,中位数,方差和标准差?

如果上表只是没有任何频率信息的原始分数,那么我可以这样做:

x < - scan(file ="scores.txt",what = integer())

中位数(X)

等等,但在给定频率表时,我无法理解如何进行这些计算.

Ric*_*ven 6

read.table(读取?read.table文件读取)读取数据.然后,通过创建单个分数的向量来扩展数据.然后我们可以编写一个函数来获得所需的统计信息.当然,如果您不想编写函数,您可以单独计算每个.

d <- read.table(header = TRUE, text = "Score     Frequency
 100         10
 200         30
 300         40")

d2 <- rep(d$Score, d$Frequency)  ## expands the data by frequency of score

multi.fun <- function(x) {
    c(mean = mean(x), median = median(x), var = var(x), sd = sd(x))
}

multi.fun(d2)
#      mean     median        var         sd 
# 237.50000  250.00000 4905.06329   70.03616 
Run Code Online (Sandbox Code Playgroud)

  • 如果频率过大,例如您无法扩展内存中的数据,该怎么办? (2认同)

Rob*_*ski 0

lines <- readLines("scores.txt")[-1]
mat <- matrix(as.numeric(unlist(
    strsplit(gsub(".*(\\d+).*(\\d+).*", "\\1,\\2", lines), ","))),
  ncol = 2, byrow = TRUE)
print(summary(mat[, 1]))
print(summary(mat[, 2]))
Run Code Online (Sandbox Code Playgroud)