Изменение одного и того же значения одной группы данных
74
6
Если у меня есть эти данные
ID, Freq
1,15
1,15
1,15
1,5
2,10
2,10
2,15
Я бы хотел их изменить
1,15
1,15
1,15
1,15
2,10
2,10
2,10
Может быть, кто-то может мне помочь в этом. Спасибо
спросил(а)
2018-10-15T11:52:00+03:00
2 года, 4 месяца назад
добавить комментарий
пожаловаться
Решение
74
Там может быть лучший способ, но один способ использования dplyr
бы в вычислении появления каждого Freq
по группе (ID
), sort
их в порядке убывания и mutate
первого для каждой группы.
library(dplyr)
df %>%
group_by(ID) %>%
mutate(Freq = names(sort(table(Freq), decreasing = TRUE)[1]))
# ID Freq
# <int> <chr>
#1 1 15
#2 1 15
#3 1 15
#4 1 15
#5 2 10
#6 2 10
#7 2 10
Мы также можем использовать which.max
df %>%
group_by(ID) %>%
mutate(Freq = names(which.max(table(Freq))))
Базовый перевод R с использованием ave
df$Freq <- with(df, ave(Freq, ID, FUN = function(x) names(which.max(table(x)))))
df$Freq <- with(df, ave(Freq, ID, FUN = function(x)
names(sort(table(x), decreasing = TRUE)[1])))
данные
df <- structure(list(ID = c(1L, 1L, 1L, 1L, 2L, 2L, 2L), Freq = c(15L,
15L, 15L, 5L, 10L, 10L, 15L)), .Names = c("ID", "Freq"), class =
"data.frame", row.names = c(NA,-7L))
ответил(а)
2018-10-15T11:59:00+03:00
2 года, 4 месяца назад
добавить комментарий
пожаловаться
Ваш ответ