我正在使用R
中的一些數據。我的數據框DF
看起來像這樣(我加在最後面的dput()
版本):使用dplyr計算列之間的差異並將結果保存爲新結果
ID S.2014.01.01 S.2014.01.02 S.2014.01.03 S.2014.01.04
1 001 1 10 5 74
2 002 2 15 6 75
3 003 3 23 7 76
4 004 4 31 8 77
5 005 5 39 9 78
6 006 6 47 10 79
7 007 7 55 11 80
8 008 8 63 12 81
9 009 9 71 13 82
10 010 10 79 14 83
DF
包含一個ID變量,並通過天解釋值(在這個例子中,我只包括4個變量多列,真正的數據幀這種風格有超過100個變量)。我的目標是計算每對變量之間的差異。例如,我想計算變量S.2014.01.02
和S.2014.01.01
之間的差異,然後將這些值保存在名爲D.2014.01.02
的新變量中。下一個變量的過程是一樣的。下一個案例是S.2014.01.03
和S.2014.01.02
,然後創建一個名爲D.2014.01.03
的新列。
由於我真實數據框中的列數,我嘗試了不同的解決方案。一種解決方案是逐個計算,但不是最優的。另外,我嘗試使用dplyr
包中的mutate_each()
函數,但我不知道如何設置成對列,然後創建新列。此外,我已經嘗試使用相同包中的lag()
函數,但它不起作用。我之所以使用這個函數是因爲我可能需要計算不同列的差異,但也可能需要兩個或三個列之間的差異,而不是一個(對)。我想獲得一個數據幀是這樣的:
ID S.2014.01.01 S.2014.01.02 S.2014.01.03 S.2014.01.04 D.2014.01.02 D.2014.01.03 D.2014.01.04
1 001 1 10 5 74 9 -5 69
2 002 2 15 6 75 13 -9 69
3 003 3 23 7 76 20 -16 69
4 004 4 31 8 77 27 -23 69
5 005 5 39 9 78 34 -30 69
6 006 6 47 10 79 41 -37 69
7 007 7 55 11 80 48 -44 69
8 008 8 63 12 81 55 -51 69
9 009 9 71 13 82 62 -58 69
10 010 10 79 14 83 69 -65 69
在這個數據框,我們可以看出,隨着D
啓動新的變量和他們對列的差異的結果。如果你可以給出一些關於這種情況的建議,那麼有兩個變量會很棒,但是如果你可以幫助我使用一個差異版本,那麼每個2或3列都是非常棒的。該dput()
版本的DF
是下一個:
DF<-structure(list(ID = c("001", "002", "003", "004", "005", "006",
"007", "008", "009", "010"), S.2014.01.01 = c(1, 2, 3, 4, 5,
6, 7, 8, 9, 10), S.2014.01.02 = c(10, 15, 23, 31, 39, 47, 55,
63, 71, 79), S.2014.01.03 = c(5, 6, 7, 8, 9, 10, 11, 12, 13,
14), S.2014.01.04 = c(74, 75, 76, 77, 78, 79, 80, 81, 82, 83)), .Names = c("ID",
"S.2014.01.01", "S.2014.01.02", "S.2014.01.03", "S.2014.01.04"
), row.names = c(NA, -10L), class = "data.frame")
感謝您的幫助!