如何使用dplyr獲得數據表的兩列的平均值?例如,如果我的數據,如果象下面這樣:如何使用dplyr獲得兩列的平均值?
dt <- data.table(A=1:5, B=c(1,4,NA,6,8))
我想創建一個新的欄目「魅力」,這是列A和B的每一行的意思是:
dt %>% mutate(Avg=mean(c(A, B), na.rm=T))
但是這個代碼並沒有給我正確的結果。這個怎麼做?非常感謝你。
如何使用dplyr獲得數據表的兩列的平均值?例如,如果我的數據,如果象下面這樣:如何使用dplyr獲得兩列的平均值?
dt <- data.table(A=1:5, B=c(1,4,NA,6,8))
我想創建一個新的欄目「魅力」,這是列A和B的每一行的意思是:
dt %>% mutate(Avg=mean(c(A, B), na.rm=T))
但是這個代碼並沒有給我正確的結果。這個怎麼做?非常感謝你。
如果你想使用dplyr實現這一目標,我會建議使用的功能rowwise()
:
R> library(dplyr)
R> dt <- data.table(A=1:5, B=c(1,4,NA,6,8))
R> j <- dt %>% rowwise() %>% mutate(Avg=mean(c(A, B), na.rm=T))
R> j
Source: local data frame [5 x 3]
Groups: <by row>
A B Avg
(int) (dbl) (dbl)
1 1 1 1.0
2 2 4 3.0
3 3 NA 3.0
4 4 6 5.0
5 5 8 6.5
如何
dt %>% mutate(Avg=rowMeans(cbind(A, B), na.rm=T))
mean
沒有量化。它將所有輸入摺疊爲單個值。如果你製作一個cbind()
的矩陣,你可以使用rowMeans
來完成。
這是我唯一的工作解決方案,非常感謝。 –
由於初始數據集data.table
,我們可以使用data.table
方法
dt[, Avg:= mean(unlist(.SD), na.rm=TRUE) , .1:nrow(dt)]
dt
# A B Avg
#1: 1 1 1.0
#2: 2 4 3.0
#3: 3 NA 3.0
#4: 4 6 5.0
#5: 5 8 6.5
你真的需要'dplyr'? –
平均值計算是我所有計算的一個步驟,我需要使用dplyr進行其他計算。 – Carter
http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem –