我有在數據幀中4列總和/平均值不同列
a <- data.frame(a=c(1,2,3,4), b=c(4,5,6,7), c=c(7,6,5,4), d=c(8,4,3,2))
我要平均前兩列和最後兩列以獲得一個數據幀與平均相同NROWS的兩列
5 15
7 10
9 8
11 6
我有在數據幀中4列總和/平均值不同列
a <- data.frame(a=c(1,2,3,4), b=c(4,5,6,7), c=c(7,6,5,4), d=c(8,4,3,2))
我要平均前兩列和最後兩列以獲得一個數據幀與平均相同NROWS的兩列
5 15
7 10
9 8
11 6
要重現你的輸出(即總和,並不代表):
前兩列和最後兩列預期輸出的
library(plyr)
ddply(a, .(), summarise, first=a+b, second=c+d)[,-1]
它產生:
first second
1 5 15
2 7 10
3 9 8
4 11 6
爲了data.frame
與平均值:
ddply(a, .(), summarise, first=(a+b)/2, second=(c+d)/2)[,-1]
輸出是:
first second
1 2.5 7.5
2 3.5 5.0
3 4.5 4.0
4 5.5 3.0
如果你不知道列的名字代碼像這樣修改:
ddply(a, .(), summarise, first=a[,1]+a[,2], second=a[,3]+a[,4])[,-1]
在這裏按順序訪問列。或者,您可以在ddply()
之前運行names(a) <- letters[1:4]
。
ddply
是非常靈活的函數,您可以指定分組變量作爲第二個參數並獲得分組結果。但是,如果情況如問題一樣簡單,你可以直接打電話summarise
:
summarise(a, first=a+b, second=c+d) # if you know columns' names
summarise(a, first=a[,1]+a[,2], second=a[,3]+a[,4]) # if you don't know columns' names
謝謝,這很有效。但我沒有任何列名稱。我以上述爲例。我只知道添加前兩列和後兩列。我將如何傳遞這些信息? – user1631306
只需在'ddply'之前運行'names(a)< - letters [1:4]'來指定名稱 – redmode
@ user1631306,請參閱更新 – redmode
可能重複這裏http://stackoverflow.com/questions/5559467/how-to-merge-two-columns-in- r-with-a-specific-symbol看看它可能會做你需要的東西 –