0

データセットがあります(データフレーム内)。apply を使用して、新しい列の行がその行内の他の列の要素を使用して関数を実行するデータセットに新しい列を追加しています。適用は機能しますが、関数をすべての行に適用した後、範囲を超えて継続し、値を何度も適用し続けます。

これが私が始めるデータです:

Abbreviation    Name    X    Y    Z     A    B    C
JM              Jim     3    4    5     6    7    8
JS              Jess    5    6    7     8    9    10

以下のコマンドを使用すると、次の結果が得られます。 コマンド:

df_new$Test <- apply(df_new,1, function(row) (df_new[,8]/df_new[,6])/(df_new[,5]/df_new[,3]))

返されたデータ (View(df_new) から)

Abbreviation    Name    X    Y    Z     A    B    C     Test
JM              Jim     3    4    5     6    7    8     .8
JS              Jess    5    6    7     8    9    10    .89
                                                        .8
                                                        .89
                                                        .8
                                                        .89

また、以下のコマンドを使用してこのデータを csv に書き込むと、次の出力が得られます。 コマンド:

write.csv(df_new,file="Df_new.csv", row.names=FALSE)

Abbreviation    Name    X    Y    Z     A    B    C     Test Test.1  Test.2    Test.3
JM              Jim     3    4    5     6    7    8     .8   .8      .8        .8
JS              Jess    5    6    7     8    9    10    .89  .89     .89       .89 

理想的には、上記から、df_new[1:2,1:9]; だけが必要です。ただし、その情報のみを保持するオブジェクトを作成しようとしても、余分な行 (View(df_new) 内) または余分な列 (.csv への書き込み時) が発生します。

4

2 に答える 2