1

私は自分の研究のために非常に具体的な方法でデータセットを整理しようとしていますが、私は R が初めてで、本当に苦労しています。どんな支援も大歓迎です。

セルの値を 3 列ごとに (最初の列から開始して) 取得し、その横の列で乗算しようとしていますが、そのセルに負の値がある場合に限ります。これに続いて、結果を合計して、外部スプレッドシートの新しい列に保存したいと思います。

これまでに書いたコードは次のとおりです。

 NegTotal = NULL 
    p = NULL
    for (i in 1:nrow(Datafile)) 
      {for (j in 1:ncol(Datafile)) 
           {if ((j %% 3 == 0) && (Datafile [i,j] < 0)) {
               p <- (datafile[i,j] * datafile[i,j+1])
               NegTotal <- sum(p) }
           else { }
          }
       } 
   for (l in seq(along = NegTotal)) {
      dim(newColumn)
      AsNewData.DataColumn("datafile", GetType(System.String))
      NewColumn.DefaultValue = "NegTotal"
      table.Columns.Add(newColumn)
    }

このコードがおそらく完全に間違っていることは承知しています。R を使用するのはこれが初めてであり、コンピューター プログラミング全般にあまり習熟していません。

現在のデータは次のように配置されています。

df <- data.frame(F1 = c( 1, -2, -1), E1 = c(1, 1, 0), Y1 = c(0, 0, 1),
                 F2 = c(-1,  2, -1), E2 = c(1, 1, 1), Y2 = c(0, 0, 1), 
                 F3 = c(-2, -2, -1), E3 = c(1, 1, 1), Y3 = c(1, 1, 0))

#   F1 E1 Y1 F2 E2 Y2 F3 E3 Y3
# 1  1  1  0 -1  1  0 -2  1  1
# 2 -2  1  0  2  1  0 -2  1  1
# 3 -1  0  1 -1  1  1 -1  1  0

望ましい出力:

#   F1 E1 Y1 F2 E2 Y2 F3 E3 Y3 NegTotal
# 1  1  1  0 -1  1  0 -2  1  1       -3
# 2 -2  1  0  2  1  0 -2  1  1       -4
# 3 -1  0  1 -1  1  1 -1  1  0       -2

したがって、x = Fy * Ey の場合。NegTotal = x1 + x2 + x3、F$y < 0 の場合のみ。

すべてが理にかなっていることを願っています!

4

2 に答える 2

0

このコードにより、目的の出力が得られます。ただし、実際のデータセットが指定した例よりも複雑な場合は、より洗練されたソリューションが必要になる場合があります。

df$NegTotal<- (pmin(0,df$F1) * df$E1) + (pmin(0,df$F2) * df$E2) + (pmin(0,df$F3) * df$E3)
于 2015-11-10T14:17:49.947 に答える