另一列 R 的分组操作
Group-by operation for another column R
我希望根据对另一列的分组对一列执行操作。
假设我有以下数据:
user <- c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)
score <- c(1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1)
time_1 <- c(130, NA, 120, 245, NA, NA, NA, 841, NA, NA, 721, 612)
time_2 <- c(NA, 742, NA, NA, 812, 212, 214, NA, 919, 528, NA, NA)
df <- data.frame(user, score, time_1, time_2)
我们得到以下 df:
user score time_1 time_2
1 1 130 NA
1 0 NA 742
1 1 120 NA
1 1 245 NA
2 0 NA 812
2 0 NA 212
2 0 NA 214
2 1 841 NA
3 0 NA 919
3 0 NA 528
3 1 721 NA
3 1 612 NA
对于每个用户1,time_1
的最小值是多少?
所以我希望按用户编号对用户进行分组,并在 time_1
.
列上执行操作
根据 OP 请求更新(见评论):
只需将 summarise
替换为 mutate
:
df %>%
group_by(user) %>%
mutate(Smallest_time1 = min(time_1, na.rm=TRUE))
user score time_1 time_2 Smallest_time1
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 130 NA 120
2 1 0 NA 742 120
3 1 1 120 NA 120
4 1 1 245 NA 120
5 2 0 NA 812 841
6 2 0 NA 212 841
7 2 0 NA 214 841
8 2 1 841 NA 841
9 3 0 NA 919 612
10 3 0 NA 528 612
11 3 1 721 NA 612
12 3 1 612 NA 612
我们可以在 summarise
中使用 min()
和 na.rm=TRUE
参数:
library(dplyr)
df %>%
group_by(user) %>%
summarise(Smallest_time1 = min(time_1, na.rm= TRUE))
user Smallest_time1
<dbl> <dbl>
1 1 120
2 2 841
3 3 612
我希望根据对另一列的分组对一列执行操作。
假设我有以下数据:
user <- c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)
score <- c(1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1)
time_1 <- c(130, NA, 120, 245, NA, NA, NA, 841, NA, NA, 721, 612)
time_2 <- c(NA, 742, NA, NA, 812, 212, 214, NA, 919, 528, NA, NA)
df <- data.frame(user, score, time_1, time_2)
我们得到以下 df:
user score time_1 time_2
1 1 130 NA
1 0 NA 742
1 1 120 NA
1 1 245 NA
2 0 NA 812
2 0 NA 212
2 0 NA 214
2 1 841 NA
3 0 NA 919
3 0 NA 528
3 1 721 NA
3 1 612 NA
对于每个用户1,time_1
的最小值是多少?
所以我希望按用户编号对用户进行分组,并在 time_1
.
根据 OP 请求更新(见评论):
只需将 summarise
替换为 mutate
:
df %>%
group_by(user) %>%
mutate(Smallest_time1 = min(time_1, na.rm=TRUE))
user score time_1 time_2 Smallest_time1
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 130 NA 120
2 1 0 NA 742 120
3 1 1 120 NA 120
4 1 1 245 NA 120
5 2 0 NA 812 841
6 2 0 NA 212 841
7 2 0 NA 214 841
8 2 1 841 NA 841
9 3 0 NA 919 612
10 3 0 NA 528 612
11 3 1 721 NA 612
12 3 1 612 NA 612
我们可以在 summarise
中使用 min()
和 na.rm=TRUE
参数:
library(dplyr)
df %>%
group_by(user) %>%
summarise(Smallest_time1 = min(time_1, na.rm= TRUE))
user Smallest_time1
<dbl> <dbl>
1 1 120
2 2 841
3 3 612