根据R中的条件根据最大值填充一列
Fill a column based on max values by condition in R
我需要根据每组的最大值填写一个新列。
所以我有
A B C
1 1 0
1 9 0
2 5 0
2 10 0
2 15 0
3 1 0
3 2 0
4 5 0
4 6 0
对于 $A 的每组 $B 中的每个最大值,我需要用 1 填充 $C
所以:
A B C
1 1 0
1 9 1
2 5 0
2 10 0
2 15 1
3 1 0
3 2 1
4 5 0
4 6 1
感谢帮助
我们可以使用基数 R ave
来匹配每组中的最大值
df$C <- +(with(df, B == ave(B, A, FUN = max)))
df
# A B C
#1 1 1 0
#2 1 9 1
#3 2 5 0
#4 2 10 0
#5 2 15 1
#6 3 1 0
#7 3 2 1
#8 4 5 0
#9 4 6 1
dplyr
中的相同内容是
library(dplyr)
df %>%
group_by(A) %>%
mutate(C = +(B == max(B)))
我们也可以匹配最大值的索引
df$C <- with(df, ave(B, A, FUN = function(x) seq_along(x) == which.max(x)))
和
df %>%
group_by(A) %>%
mutate(C = +(row_number() == which.max(B)))
我需要根据每组的最大值填写一个新列。
所以我有
A B C
1 1 0
1 9 0
2 5 0
2 10 0
2 15 0
3 1 0
3 2 0
4 5 0
4 6 0
对于 $A 的每组 $B 中的每个最大值,我需要用 1 填充 $C
所以:
A B C
1 1 0
1 9 1
2 5 0
2 10 0
2 15 1
3 1 0
3 2 1
4 5 0
4 6 1
感谢帮助
我们可以使用基数 R ave
来匹配每组中的最大值
df$C <- +(with(df, B == ave(B, A, FUN = max)))
df
# A B C
#1 1 1 0
#2 1 9 1
#3 2 5 0
#4 2 10 0
#5 2 15 1
#6 3 1 0
#7 3 2 1
#8 4 5 0
#9 4 6 1
dplyr
中的相同内容是
library(dplyr)
df %>%
group_by(A) %>%
mutate(C = +(B == max(B)))
我们也可以匹配最大值的索引
df$C <- with(df, ave(B, A, FUN = function(x) seq_along(x) == which.max(x)))
和
df %>%
group_by(A) %>%
mutate(C = +(row_number() == which.max(B)))