найти максимальное значение в одной строке и вернуть имя столбца - PullRequest
0 голосов
/ 06 октября 2018

Это мой фрейм данных.Я хочу получить наибольшее число в строке 3 и вернуть имя столбца, т.е. результат должен быть "Высота"

tt<-"Rows    Weight      Age        Height
    Cats -0.7289964  0.2194702 -2.4674780 
    Dogs  1.0889353  0.3167629 -0.9208548 
    Rats -0.6374692 -1.7249049  0.6567313 
    Mice -0.1348642  0.4507473 -1.7309010"

data <- read.table(text=tt, header=T)

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

colnames (df) [max.col (df [3,], ties.method = "first")] возвращает ошибку

colnames (test) [max.col (test [3,], ties.method = "first")] [1] NA Предупреждающее сообщение: в max.col (test [3,], ties.method = "first"): NA введены по принуждению

0 голосов
/ 06 октября 2018

Как отметил @ G5W, возраст в третьей строке имеет не самое высокое значение, а самое высокое абсолютное значение:

colnames(df)[max.col(abs(df[3, ]), ties.method = "first")]

Если вас действительно интересует самое высокое значение, то:

colnames(df)[max.col(df[3, ], ties.method = "first")]

Или, если вы предпочитаете решение tidyverse, возвращается столбец с наибольшим абсолютным значением:

df %>%
  rowid_to_column() %>%
  filter(rowid == 3) %>%
  gather(col, val, Weight:Height) %>%
  filter(abs(val) == max(abs(val))) %>%
  select(-rowid, -val)

Возвращается столбец с наибольшим значением:

df %>%
  rowid_to_column() %>%
  filter(rowid == 3) %>%
  gather(col, val, Weight:Height) %>%
  filter(val == max(val)) %>%
  select(-rowid, -val)

Данные:

df <- read.table(text = "       Weight      Age        Height
Cats -0.7289964  0.2194702 -2.4674780 
                 Dogs  1.0889353  0.3167629 -0.9208548 
                 Rats -0.6374692 -1.7249049  0.6567313 
                 Mice -0.1348642  0.4507473 -1.7309010", header = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...