2016-12-21 22 views
1

爲什麼SE_daily的值錯誤?我期望它四捨五入到最接近的整數(雖然我想要一個小數),而小數的答案是完全錯誤的。我錯過了什麼?按多個類別分組時舍入錯誤

csv<-csv%>%group_by(id_num)%>%group_by(Month)%>%group_by(Day)%>%mutate(SE_daily=mean(SelfEsteem, na.rm=T)) 
head(csv[,c(1:5,28,181)]) 
> head(csv[,c(1:5,28,181)]) 
Source: local data frame [6 x 7] 
Groups: Day [3] 

    X.1  X id_num Month Day SelfEsteem SE_daily 
    <int> <int> <int> <int> <int>  <int> <dbl> 
1  1  1  29  2 19   4 3.457944 #mean(4,4,3)= 4, expected answer= 3.66666666667 
2  2  2  29  2 19   4 3.457944 
3  3  3  29  2 19   3 3.457944 
4  4  4  29  2 20   4 3.424242 #expected answer= 4 
5  5  5  29  2 21   4 3.318182 #expected answer=4 
6  6  6  29  2 21   4 3.318182 

頭CSV輸出:

structure(list(X.1 = 1:6, X = 1:6, 
    id_num = c(29L, 29L, 29L, 29L, 29L, 29L), 
    Month = c(2L, 2L, 2L, 2L, 2L, 2L), 
    Day = c(19L, 19L, 19L, 20L, 21L, 21L), 
    SelfEsteem = c(4L, 4L, 3L, 4L, 4L, 4L), 
    SE_daily = c(3.45794392523365, 3.45794392523365, 3.45794392523365, 3.42424242424242, 3.31818181818182, 3.31818181818182)), 
    .Names = c("X.1", "X", "id_num", "Month", "Day", "SelfEsteem", "SE_daily"), 
    row.names = c(NA, -6L), 
    class = "data.frame") 
+0

你能重新發布'dput'結構有在其當前形式'誤差的誤差在結構(列表(X.1 = 1:6,X = 1:6,ID_NUM = C (29L,29L,29L,: 對象'未找到'日' – OdeToMyFiddle

+0

這就是ks。不知道爲什麼輸出是錯誤的....我原本是'輸入(頭(csv))'。我必須將其轉換爲data.frame,然後重新輸入 – Rilcon42

+1

當我在您提供的數據樣本上運行代碼時,我得到了預期的答案(每個'Day'的未被平均的平均值)。此外,'group_by(id_num)%>%group_by(Month)%>%group_by(Day)'的最終結果是僅由「日」組成,因爲每個「group_by」都會覆蓋前一個。如果您想按三列進行分組,請執行'group_by(id_num,Month,Day)'。 – eipi10

回答

2

我得到SE_daily預期的輸出。這有可能是通過管道將group_by命令,而不是把它們放在一個命令你正在尋找在多個id_numMonths共享公共Day(假設提供的數據結構僅僅是整個數據集的一個子集)

library(dplyr) 
csv %>% 
    group_by(id_num, Month, Day) %>% 
    mutate(SE_daily=mean(SelfEsteem, na.rm=TRUE)) 

輸出

Source: local data frame [6 x 7] 
Groups: id_num, Month, Day [3] 

    X.1  X id_num Month Day SelfEsteem SE_daily 
    <int> <int> <int> <int> <int>  <int> <dbl> 
1  1  1  29  2 19   4 3.666667 
2  2  2  29  2 19   4 3.666667 
3  3  3  29  2 19   3 3.666667 
4  4  4  29  2 20   4 4.000000 
5  5  5  29  2 21   4 4.000000 
6  6  6  29  2 21   4 4.000000