循环通过R中的.csv文件,计算相对频率?

时间:2010-08-03 17:41:12

标签: r csv statistics

我是R的新手,我正在尝试创建一个.R脚本,它将打开我的.csv文件并计算一些频率。此文件中有标题,与它们关联的值为1,0,NA或-4。我想要做的是遍历每个垂直行,然后计算它们的频率。我确定这是一个简单的脚本,但我不确定R的语法是如何工作的。有人能帮我开始吗?

1 个答案:

答案 0 :(得分:1)

确切的脚本会根据您的输入和您想要的输出类型(仅打印到交互式控制台?写入.csv?)而有所不同,但这是我的尝试:

#Read the data into .csv - it assumes headers
dat <- read.csv(file = "yourfile.csv")

#For right now, use this fake data
dat <- data.frame(x = c(-4, 0, 1, 1, -4, NA, NA, 0), y = c(1, 1, 1, 0, -4, NA, 0, NA))

#Get the frequency of values for each column, assuming every column consists of data
apply(X = dat, MARGIN = 2, FUN = function(x) {summary(factor(x))})

apply函数将您给出的函数(FUN)应用于您提供的数据的边距(1 =行,2 =列)。你可以给它任何你喜欢的功能。传递FUN = summary将为您提供每列的平均值,最小值,最大值等(因为它们是数字的)。但是因子的summary()的默认方法是频率,这是你需要的。因此,不要传递摘要,而是将R视为将数字视为一个因素:定义一个匿名函数function(x)(应用将知道x,你指的是一次取一个列)。将此函数设置为首先将x转换为因子(factor(x)),然后汇总该因子。这将返回一个矩阵,其中包含每列的频率。

不是最优雅的代码,但我认为它可以满足您的需求。