我是R的新手,我正在尝试创建一个.R脚本,它将打开我的.csv文件并计算一些频率。此文件中有标题,与它们关联的值为1,0,NA或-4。我想要做的是遍历每个垂直行,然后计算它们的频率。我确定这是一个简单的脚本,但我不确定R的语法是如何工作的。有人能帮我开始吗?
答案 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)
),然后汇总该因子。这将返回一个矩阵,其中包含每列的频率。
不是最优雅的代码,但我认为它可以满足您的需求。