2009-09-16 16 views
0

下面的函數完全適合我的目的。顯示非常棒。現在我的問題是我需要能夠多次重複執行其他符合其他模式的變量。將R Script作爲順序調查問題的函數進行迭代

在這個例子中,我輸出了「q4a」的結果,我希望能夠按照如下模式進行問題排序:q4 < a - z>或q < 4 - 10> < a - z>,自動。

是否有某種方式來迭代這樣的指定變量(在這種情況下q4a)每次都改變?

這裏是我的功能:

require(reshape) # Using it for melt 
require(foreign) # Using it for read.spss 

d1 <- read.spss(...) ## Read in SPSS file 

attach(d1,warn.conflicts=F) ## Attach SPSS data 

q4a_08 <- d1[,grep("q4a_",colnames(d1))] ## Pull in everything matching q4a_X 
q4a_08 <- melt(q4a_08) ## restructure data for post-hoc 

detach(d1) 

q4aaov <- aov(formula=value~variable,data=q4a) ## anova 

提前感謝!

+0

您能否分享一下d1中的內容,以便我們能更好地理解問題? – 2009-09-16 03:54:26

+0

d1是來自SPSS文件的調查數據。調查共有485名受訪者詢問了24個問題,都是數字回答。 – 2009-09-16 14:45:43

回答

4

不知道這是你在找什麼,但產生的問題清單:

> gsub('^', 'q', gsub(' ', '', 
    apply(expand.grid(1:10,letters),1, 
      function(r) paste(r, sep='', collapse='') 
     ))) 
    [1] "q1a" "q2a" "q3a" "q4a" "q5a" "q6a" "q7a" "q8a" "q9a" "q10a" 
[11] "q1b" "q2b" "q3b" "q4b" "q5b" "q6b" "q7b" "q8b" "q9b" "q10b" 
[21] "q1c" "q2c" "q3c" "q4c" "q5c" "q6c" "q7c" "q8c" "q9c" "q10c" 
[31] "q1d" "q2d" "q3d" "q4d" "q5d" "q6d" "q7d" "q8d" "q9d" "q10d" 
[41] "q1e" "q2e" "q3e" "q4e" "q5e" "q6e" "q7e" "q8e" "q9e" "q10e" 
[51] "q1f" "q2f" "q3f" "q4f" "q5f" "q6f" "q7f" "q8f" "q9f" "q10f" 
[61] "q1g" "q2g" "q3g" "q4g" "q5g" "q6g" "q7g" "q8g" "q9g" "q10g" 
[71] "q1h" "q2h" "q3h" "q4h" "q5h" "q6h" "q7h" "q8h" "q9h" "q10h" 
[81] "q1i" "q2i" "q3i" "q4i" "q5i" "q6i" "q7i" "q8i" "q9i" "q10i" 
[91] "q1j" "q2j" "q3j" "q4j" "q5j" "q6j" "q7j" "q8j" "q9j" "q10j" 
... 

然後你把分析的內部成需要的問題前綴作爲一個功能參數:

analyzeQuestion <- function (prefix) 
{ 
    q <- d1[,grep(prefix,colnames(d1))] ## Pull in everything matching q4a_X 
    q <- melt(q) ## restructure data for post-hoc 

    qaaov <- aov(formula=value~variable,data=q4a) ## anova 
    return (LTukey(q4aaov,which="",conf.level=0.95)) ## Tukey's post-hoc 
} 

現在 - 我不知道在您的「Q4A」變量是哪裏來的(如aov(..., data=q4a)使用 - 所以不知道該怎麼辦是一點,但希望這可以幫助

要將兩者結合在一起,您可以使用sapply()analyzeQuestion函數應用於我們自動生成的每個前綴。

+0

我打算試一試。 – 2009-09-16 14:48:01

3

我會建議融化整個數據集,然後將variable拆分爲其組成部分。那麼你可以更容易地使用子集來查看(例如)只是問題四:subset(molten, q = 4)

+0

我會看看我如何能夠完成這項工作。 – 2009-09-16 14:51:26

+0

在重塑的介紹中有一些這樣的例子:http://www.jstatsoft.org/v21/i12/paper – hadley 2009-09-16 15:49:31

+0

感謝您的論文鏈接! – 2009-09-16 17:50:38