0

次のようなデータフレームがあります。

> head(Data1A)
        Prime Target CorrectAnswer Accuracy   RT   Block TrialType
1     bezaaid barkme    PseudoWord        1 3450 Block 1        NA
2       hazen lemmet          Word        1 1108 Block 1        NA
3  bergtoppen slavin          Word        1 1160 Block 1        NA
4       wekte gareel          Word        1 1250 Block 1        NA
5      zessen studio          Word        1  557 Block 1        NA
6 nauwkeurige hotens    PseudoWord        1  882 Block 1        NA

ご覧のとおり、列TrialTypeを埋める必要があり、それを行うには条件ステートメントが必要です。私は自分が何を望んでいるのかを知っており、できる限り擬似コードに書き留めましたが、これを正しい構文で実装できるようになるまでには何年もかかりません。どんな助けでも大歓迎です。

疑似コード:

Data1A$TrialTypeの対応するセルData1A$Blockが等しい場合、Block 2またはBlock 3内の対応する行Data1A$CorrectAnswerが等しいWord場合、またはData1A$Block内の対応するセルが「ブロック4」または「ブロック5」に等しく、内の対応するセルData1A$CorrectAnswerが等しい場合、内の各セルPseudoWordの対応するセルは、else の対応するセルが等しいTrialType場合、OR の対応するセルが等しい 場合 、ORの対応する行が等しい場合、OR の対応するセルが等しい場合、または対応するセルインが等しいRegularData1A$BlockBlock 1Block 6Data1A$BlockBlock 2Block3Data1A$CorrectAnswerpseudoWordData1A$BlockBlock 4Block 5Data1A$CorrectAnswerWordの対応するセルは次のData1A$TrialTypeようになります。Random

これが理解できることを願っています。疑似コードの意図に疑問がある場合に備えて確認します。

4

1 に答える 1

2

ここであなたのロジックを単純化するのは本当に頭が痛いです。

しかし、これはうまくいくはずです。

私はいくつかのデータを生成します

dat <- read.table(text =        "Prime Target CorrectAnswer Accuracy   RT   Block TrialType
                  1     bezaaid barkme    PseudoWord        1 3450 'Block 4'        NA
                  2       hazen lemmet          Word        1 1108 'Block 5'        NA
                  3  bergtoppen slavin          Word        1 1160 'Block 4'        NA
                  1     bezaaid barkme    PseudoWord        1 3450 'Block 5'        NA
                  2       hazen lemmet          Word        1 1108 'Block 2'        NA
                  3  bergtoppen slavin          Word        1 1160 'Block 3'        NA
                  1     bezaaid barkme    PseudoWord        1 3450 'Block 2'        NA
                  2       hazen lemmet          Word        1 1108 'Block 3'        NA
                  3  bergtoppen slavin          Word        1 1160 'Block 1'        NA
                  4       wekte gareel          Word        1 1250 'Block 6'        NA
                  5      zessen studio          Word        1  557 'Block 1'        NA
                  6 nauwkeurige hotens    PseudoWord        1  882 'Block 3'        NA",header = T,row.names = NULL)

次に、ロジックを実装します。

transform(dat,
          TrialType= ifelse(Block %in% c('Block 4','Block 5'),
                            ifelse(CorrectAnswer =="Word" ,"Random","Regular"),
                            ifelse(Block  %in% c('Block 2','Block 3'),
                                   ifelse(CorrectAnswer =="Word" ,"Regular","Random"),
                                   'Random')))

結果はこちら

  row.names       Prime Target CorrectAnswer Accuracy   RT   Block TrialType
1          1     bezaaid barkme    PseudoWord        1 3450 Block 4   Regular
2          2       hazen lemmet          Word        1 1108 Block 5    Random
3          3  bergtoppen slavin          Word        1 1160 Block 4    Random
4          1     bezaaid barkme    PseudoWord        1 3450 Block 5   Regular
5          2       hazen lemmet          Word        1 1108 Block 2   Regular
6          3  bergtoppen slavin          Word        1 1160 Block 3   Regular
7          1     bezaaid barkme    PseudoWord        1 3450 Block 2    Random
8          2       hazen lemmet          Word        1 1108 Block 3   Regular
9          3  bergtoppen slavin          Word        1 1160 Block 1    Random
10         4       wekte gareel          Word        1 1250 Block 6    Random
11         5      zessen studio          Word        1  557 Block 1    Random
12         6 nauwkeurige hotens    PseudoWord        1  882 Block 3    Random
于 2013-01-18T13:34:00.033 に答える