Поиск максимального количества столбцов по группе с условием

Используйте RegexOptions.Singleline, он меняет значение. включить новые строки

Regex.Replace (content, searchText, replaceText, RegexOptions.Singleline);

1
задан PoGibas 13 July 2018 в 19:24
поделиться

3 ответа

После группировки «Gill» подмножество «Время», где «Diametre» не равно 0 и получает значение max (если «время» - numeric класс)

library(dplyr)
df1 %>%
  group_by(Gill) %>%
  summarise(Time = max(Time[Diametre != 0]))
1
ответ дан akrun 17 August 2018 в 12:12
поделиться
  • 1
    Большое спасибо! Я сделаю все возможное, чтобы улучшить свой вопрос в следующий раз и предоставить репрезентативную выборку моих данных вместо изображения. – Flippo 17 July 2018 в 07:50

Здесь вы можете использовать aggregate:

> df<- data.frame(
    Gill = rep(1:11, each = 2),
    diameter = c(0,0,1,0,0,0,73.36, 80.08,1,25.2,53.48,61.21,28.8,28.66,71.2,80.25,44.55,53.50,60.91,0,11,74.22),
    time = 0.16
  )
> df
   Gill diameter time
1     1     0.00 0.16
2     1     0.00 0.16
3     2     1.00 0.16
4     2     0.00 0.16
5     3     0.00 0.16
6     3     0.00 0.16
7     4    73.36 0.16
8     4    80.08 0.16
9     5     1.00 0.16
10    5    25.20 0.16
11    6    53.48 0.16
12    6    61.21 0.16
13    7    28.80 0.16
14    7    28.66 0.16
15    8    71.20 0.16
16    8    80.25 0.16
17    9    44.55 0.16
18    9    53.50 0.16
19   10    60.91 0.16
20   10     0.00 0.16
21   11    11.00 0.16
22   11    74.22 0.16
> # Remove diameter == 0 before aggregate
> dfnew <- df[df$diameter != 0, ]
> aggregate(dfnew$time, list(dfnew$Gill), max )
  Group.1    x
1       2 0.16
2       4 0.16
3       5 0.16
4       6 0.16
5       7 0.16
6       8 0.16
7       9 0.16
8      10 0.16
9      11 0.16
0
ответ дан see-king_of_knowledge 17 August 2018 в 12:12
поделиться

Я бы использовал другой подход, чем элегантное решение, предлагаемое акроном. Я знаю, как использовать этот метод для создания столбца MaxTime, который вы показываете на своем изображении.

#This will split your df into a list of data frames for each gill.
list.df <- split(df1, df1$Gill)

Затем вы можете использовать lapply, чтобы найти максимальное время для каждого Gill, а затем сделать это значение новым столбец MaxTime.

lapply(list.df, function(x) mutate(x, MaxTime = max(x$Time[x$Diametre != 0])))

Затем вы можете объединить эти разделенные данные с помощью bind_rows ()

df1 = bind_rows(list.df)
0
ответ дан zackadavis 17 August 2018 в 12:12
поделиться
  • 1
    Отредактировано для того, чтобы иметь надлежащий лапный () звонок с английским Diametre королевы – zackadavis 13 July 2018 в 20:15
Другие вопросы по тегам:

Похожие вопросы: