Найти минимум столбца и соответствующую строку минимума с условием для другого столбца - PullRequest
0 голосов
/ 02 июня 2018
Key        Value Value2      Min Value Min Value2
1xA         1      2            1         2
2xA         2      3            2         3
3xB         3      1            2         2
1xB         1      1            1         1
1xA         5      5            1         2
2xB         2      6            2         6
3xB         2      2            2         2
2xA         4      1            2         3

В соответствии с вопросом, который я поднял в этом: Найти минимум столбца с условием на другом для каждого наблюдения в R

Столбец Min. Value являетсяминимум Value, соответствующий каждому Key Как я могу также заполнить Min Value2, который будет Value2, соответствующий Min. Value, полученному для каждого Ключа?

1 Ответ

0 голосов
/ 02 июня 2018

Вы можете сначала вычислить min для группы и найти номер строки, содержащей значение min, которое можно использовать для получения Value2.

Решение с использованием dplyr:

library(dplyr)

df %>% group_by(Key) %>%
  mutate(MinValue = min(Value)) %>%
  mutate(MinValue2 = Value2[which(Value==MinValue)[1]]) %>%
  as.data.frame()

#   Key Value Value2 MinValue MinValue2
# 1 1xA     1      2        1         2
# 2 2xA     2      3        2         3
# 3 3xB     3      1        2         2
# 4 1xB     1      1        1         1
# 5 1xA     5      5        1         2
# 6 2xB     2      6        2         6
# 7 3xB     2      2        2         2
# 8 2xA     4      1        2         3

Данные:

df <- read.table(text = 
"Key        Value Value2      
1xA         1      2         
2xA         2      3         
3xB         3      1         
1xB         1      1         
1xA         5      5         
2xB         2      6         
3xB         2      2         
2xA         4      1",
header = TRUE, stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...