我正在嘗試為我的資料的某個子集創建平均值,并且我想將這些作為新變數添加到資料的不同子集。
假設我有以下資料:
df <- data.frame(year = rep(c(2010,2012,2017), 6),
party = rep(c("A", "A", "A", "B", "B", "B", "C", "C", "C"), 2),
left = rep(c(1,1,1,0,0,0,1,1,1),2),
area = c(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2),
pp = c(3,4,5,1,2,6,3,4,2,5,1,1,3,4,5,2,3,0))
看起來像:
year party left area pp
2010 A 1 1 3
2012 A 1 1 4
2017 A 1 1 5
2010 B 0 1 1
2012 B 0 1 2
2017 B 0 1 6
2010 C 1 1 3
2012 C 1 1 4
2017 C 1 1 2
2010 A 1 2 5
2012 A 1 2 1
2017 A 1 2 1
2010 B 0 2 3
2012 B 0 2 4
2017 B 0 2 5
2010 C 1 2 2
2012 C 1 2 3
2017 C 1 2 0
現在我想要的是在每個“年”和“面積”中為left == 1創建一個新變數,即“pp”的平均值。但我也想把這個放到left == 0的子集中。
我試過:
df %>%
group_by(year, left, area) %>%
mutate(mean_left = mean(pp)) %>% ungroup()
但這給了我一個特定于 left == 0 的值和一個特定于 left == 1 的值(在每年的聚會中)。
year party left area pp mean_left
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
2010 A 1 1 3 3
2012 A 1 1 4 4
2017 A 1 1 5 3.5
2010 B 0 1 1 1
2012 B 0 1 2 2
2017 B 0 1 6 6
2010 C 1 1 3 3
2012 C 1 1 4 4
2017 C 1 1 2 3.5
2010 A 1 2 5 3.5
2012 A 1 2 1 2
2017 A 1 2 1 0.5
2010 B 0 2 3 3
2012 B 0 2 4 4
2017 B 0 2 5 5
2010 C 1 2 2 3.5
2012 C 1 2 3 2
2017 C 1 2 0 0.5
我也試過:
df %>%
group_by(year, left, area) %>%
mutate(mean_left = mean(df$pp[df$left==1])) %>% ungroup()
但是這里的 group_by 函式似乎失敗了,我在所有列中得到 2.75(這是 的值mean(df$pp[df$left==1]))
我怎樣才能獲得每年的平均分數和左側 == 1 的面積,將這個相同的數字添加到今年和左側 == 2 的面積?
它應該看起來像:
year party left area pp mean_left
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
2010 A 1 1 3 3
2012 A 1 1 4 4
2017 A 1 1 5 3.5
2010 B 0 1 1 3
2012 B 0 1 2 4
2017 B 0 1 6 3.5
2010 C 1 1 3 3
2012 C 1 1 4 4
2017 C 1 1 2 3.5
2010 A 1 2 5 3.5
2012 A 1 2 1 2
2017 A 1 2 1 0.5
2010 B 0 2 3 3.5
2012 B 0 2 4 2
2017 B 0 2 5 0.5
2010 C 1 2 2 3.5
2012 C 1 2 3 2
2017 C 1 2 0 0.5
提前致謝!
uj5u.com熱心網友回復:
你走在正確的軌道上;你不能 group_byleft而是在你的平均函式中選擇它。
df %>%
group_by(year, area) %>%
mutate(mean_left = mean(pp[left == 1])) %>%
ungroup()
輸出
# A tibble: 18 x 6
year party left area pp mean_left
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 2010 A 1 1 3 3
2 2012 A 1 1 4 4
3 2017 A 1 1 5 3.5
4 2010 B 0 1 1 3
5 2012 B 0 1 2 4
6 2017 B 0 1 6 3.5
7 2010 C 1 1 3 3
8 2012 C 1 1 4 4
9 2017 C 1 1 2 3.5
10 2010 A 1 2 5 3.5
11 2012 A 1 2 1 2
12 2017 A 1 2 1 0.5
13 2010 B 0 2 3 3.5
14 2012 B 0 2 4 2
15 2017 B 0 2 5 0.5
16 2010 C 1 2 2 3.5
17 2012 C 1 2 3 2
18 2017 C 1 2 0 0.5
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/409169.html
標籤:
上一篇:從繪圖圖表的第th條中洗掉文本
下一篇:消除資料框中的雙引號
