如何在 r 中对 data.frame 的元素进行操作,从而创建一个新列?
How can I operate on elements of a data.frame in r, that creates a new column?
假设我有一个 data.frame, df.
a b d
1 2 4
1 2 5
1 2 6
2 1 5
2 3 6
2 1 1
我想对其进行运算,以便对于所有 a 和 b 相等的地方,我计算 d 的平均值。
我发现使用聚合可以做到这一点,
聚合(d ~ a + b,df,均值)
这给了我一些合理的东西
a b d
1 2 5
2 1 3
2 3 6
但理想情况下,我想保留原来的 d 列,并添加一个新的 m 列,这样我就可以得到原始的 data.frame 和一个包含平均值的新列 "m",例如,
a b d m
1 2 4 5
1 2 5 5
1 2 6 5
2 1 5 3
2 3 6 6
2 1 1 3
关于如何在 R 中执行此操作的任何想法 "properly"?
library(dplyr)
df <- read.table(text = "a b d
1 2 4
1 2 5
1 2 6
2 1 5
2 3 6
2 1 1
" , header = T)
df %>%
group_by(a , b) %>%
mutate(m = mean(d))
假设我有一个 data.frame, df.
a b d
1 2 4
1 2 5
1 2 6
2 1 5
2 3 6
2 1 1
我想对其进行运算,以便对于所有 a 和 b 相等的地方,我计算 d 的平均值。
我发现使用聚合可以做到这一点, 聚合(d ~ a + b,df,均值) 这给了我一些合理的东西
a b d
1 2 5
2 1 3
2 3 6
但理想情况下,我想保留原来的 d 列,并添加一个新的 m 列,这样我就可以得到原始的 data.frame 和一个包含平均值的新列 "m",例如,
a b d m
1 2 4 5
1 2 5 5
1 2 6 5
2 1 5 3
2 3 6 6
2 1 1 3
关于如何在 R 中执行此操作的任何想法 "properly"?
library(dplyr)
df <- read.table(text = "a b d
1 2 4
1 2 5
1 2 6
2 1 5
2 3 6
2 1 1
" , header = T)
df %>%
group_by(a , b) %>%
mutate(m = mean(d))