2017-12-27 40 views
0

最初の行は、N個の列に対して、次の行を追加するための参照値です。最初の行を参照として保持するデータフレームでの計算

データ

A B C D 
3 5 1 2 

1 4 5 3 
2 2 2 4 
3 1 3 1 
4 3 1 2 

計算は次のように

  • 3は、同様に基準3は1、2、3に追加する必要がある追加された値、および4、5 4,2,1,3に加えられた参照値であり、1は5,2,3,1に追加された参照値であり、従って... n列までである。

    1 + 3 4 + 5 5 + 1 3 + 2 
    2 + 3 2 + 5 2 + 1 4 + 2 
    3 + 3 1 + 5 3 + 1 1 + 2 
    4 + 3 3 + 5 1 + 1 2 + 2 
    

予想される出力:

A B C D 
4 9 6 5 
5 7 3 6 
6 6 4 3 
7 8 2 4 

助けてください。ありがとう。

答えて

5

多分ちょうどこの:data.frameを開始

c(mydf[1, ]) + mydf[-1, ] 
## A B C D 
## 2 4 9 6 5 
## 3 5 7 3 6 
## 4 6 6 4 3 
## 5 7 8 2 4 

:あなたはあなたの最初のデータフレーム内の値を置き換えるためにしようとしている場合

mydf <- structure(list(A = c(3L, 1L, 2L, 3L, 4L), B = c(5L, 4L, 2L, 1L, 
    3L), C = c(1L, 5L, 2L, 3L, 1L), D = c(2L, 3L, 4L, 1L, 2L)), .Names = c("A", 
    "B", "C", "D"), row.names = c(NA, 5L), class = "data.frame") 
+0

ここでCが実際に何を意味しているのか説明してもらえますか? – Pradnya

+0

@pradnya、単に 'data.frame'部分を削除して、' list'を残してください。 – A5C1D2H2I1M1N2O1R2T1

+0

@pradnya、それを 'mydf [-1、] + list(3、5、1、2)'と考える。 – A5C1D2H2I1M1N2O1R2T1

2

我々は

(df1[1,][col(df1)] + df1)[-1,] 
# A B C D 
#2 4 9 6 5 
#3 5 7 3 6 
#4 6 6 4 3 
#5 7 8 2 4 
0

を行うことができますnとEW値は、次の操作を行うことができます:

df <- data.frame(c(3,1,2,3,4), c(5,4,2,1,3), c(1,5,2,3,1), c(2,3,4,1,2)) 
names(df) <- c("A", "B", "C", "D") 

for (i in 2:nrow(df)) { 
    for (j in 1:ncol(df)) { 
    df[i,j] <- df[1,j] + df[i,j] 
    } 
} 

これはおそらく、ベクトル化され、より速く、あなたが非常に大規模なデータフレームを持っている場合は、参考になるこれは実行されますが、あなたが迅速かつ汚いソリューションを必要とする場合、それは動作しますがあります。

出力:

A B C D 
1 3 5 1 2 
2 4 9 6 5 
3 5 7 3 6 
4 6 6 4 3 
5 7 8 2 4 

が、これは便利ですね!

関連する問題