2010-08-03 117 views
0

我是R的新手,我正在嘗試創建一個.R腳本,它將打開我的.csv文件並計算一些頻率。該文件中有標題,與它們相關的值爲1,0,NA或-4。我想要做的是通過每一個垂直行,然後計算它們的頻率。我確信這是一個簡單的腳本,但我不確定R的語法是如何工作的。任何人都可以讓我開始這個請嗎?通過R中的.csv文件循環,計算相對頻率?

回答

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)),然後總結該因子。這將返回一個矩陣與每列的頻率。

不是最優雅的代碼,但我認爲它會讓你得到你需要的。

+2

對漂亮的代碼,你可以做 '申請(DAT,2,表,useNA =「總是」)' – JoFrhwld 2010-08-03 23:35:05

+0

很不錯 - 我知道必須有比clobbing它變成一個因素更好的辦法。 – 2010-08-03 23:56:34