Изменение одного и того же значения одной группы данных

71
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 года, 1 месяц назад
1
Решение
71

Там может быть лучший способ, но один способ использования 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 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема