0

私は次のようなループでデータを読み込んでいます:

for(i in 1:2)
{
n= paste(i,".txt", sep="")
a<- sprintf("table%d", i, i)
data <- read.table(toString(n), header = TRUE, sep = "\t")
......

次に、データに対して一連の処理を実行し(トリム平均などを取得)、各ファイルの平均値を含むマスターテーブルにフィードします。後で手段についてANOVAを実行します。

とにかく、特定のファイル(またはステートメント内のファイル)のスコアを逆にして、それらを同等にする必要があります(aからbおよびbからa)。これは私がそれについて行った方法ですが、それはかなり愚かに見えます、これを行うためのより良い構文はありますか?

if (i ==(2|4|6|7|9|11|14|16|18|19|21|23|25|28|30|32|34|36))
{
data$Reqresponse[data$Reqresponse == "a"] <- "nw"
data$Reqresponse[data$Reqresponse == "b"] <- "w"
data$Reqresponse[data$Reqresponse == "nw"] <- "b"
data$Reqresponse[data$Reqresponse == "w"] <- "a"
}

ありがとう

4

2 に答える 2

3

交換しようとしている場合は、一時的にどこかに置く必要があります。

そうすると a <- bb <- a 両方とも同じ値になります。代わりに行う必要があります TMP <- a a <- b b <- TMP

ステートメントに関しては、@ sebastian-c が指摘しているようorに、おそらく探しているでしょう。%in%

于 2013-03-13T05:42:57.480 に答える
1

あなたがしているのは、私が発見する前に私が物事にどのようにアプローチしていたかということですplyr。これが私が今同様の状況にどのようにアプローチするかです。もっと早く教えてくれる人もいるかもしれませんが、これがあなたの状況にどう取り組むかです。

library(plyr)

#Assuming all your files are in the working directory
filenames <- list.files(".", ".txt") 
#Assuming your files are "1.txt" etc
file.index <- sub("([0-9]+).txt", "\\1", filenames) 
#reads in all the files
import <- mdply(filenames, read.table, header = TRUE, sep = "\t") 
#Assigns the index to each group of rows from each file
import$index <- file.index[import$X1] 

#Gives you one big table to work with.
#Fix your reversing issue
import$Reqresponse.alt[import$Reqresponse == "a" & import$index %in% c(2,4,6,7,9,11,14,16,18,19,21,23,25,28,30,32,34,36)] <- "b"
import$Reqresponse.alt[import$Reqresponse == "b" & import$index %in% c(2,4,6,7,9,11,14,16,18,19,21,23,25,28,30,32,34,36)] <- "a"

import$Reqresponse <- import$Reqresponse.alt
import$Reqresponse.alt <- NULL

#Now your table should be clean
#You can use plyr to to summarise your data

import.summary <- ddply(import, .(index), summarise,
                        demo.mean = mean(demo), #functions you want to summarise with go here
                        demo.sd = sd(demo),
                        #etc
                        )

明らかに、間違いがないことを確認するために使用する実際のデータはありませんが、これは現在私にとって非常にうまく機能しているワークフローの一種にすぎません。

于 2013-03-13T05:53:10.210 に答える