2016-08-17 4 views
0

У меня есть список x2, имеющий два кадра данных, x и x1. Оба имеют 4 столбца: n, m, l и k. Я хочу выбрать кадр данных с максимальным последним значением для столбца k.выберите dataframes из списка на основе максимального значения столбца

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

x <- data.frame(n = c(2, 13, 5),m = c(2, 23, 6),l = c(2, 33, 7),k = c(2, 43, 8)) 
x1 <- data.frame((n = c(2, 3, 15),m = c(2, 3, 16),l = c(2, 3, 17),k = c(2, 3, 18)) 
x2<-list(x,x1) 
+0

Это не служба написания кода. Пожалуйста, отправьте свою попытку ответить на этот вопрос и задайте конкретный вопрос. – polka

+0

@polka - Я новичок в R и, следовательно, не в состоянии визуализировать, как будет выглядеть кодирование. –

+0

http://meta.stackexchange.com/q/23628/312334 – polka

ответ

1

Использование lapply, зацикливание по списку x2 и получите последнее значение столбца k этого фрейма данных. Использование which.max, найти индекс, который имеет максимум предыдущей lapply команды и извлечь что dataframe из x2

Примечания: Этот код не учитывает связи в последнем значении к колонку.

x2[which.max(lapply(x2, function(x) tail(x$k, 1)))] 

# [[1]] 
# n m l k 
# 1 2 2 2 2 
# 2 3 3 3 3 
# 3 15 16 17 18 
+0

Нередко ответы, содержащие только код без каких-либо объяснений, отмечены как низкое качество. Я могу помочь будущим читателям добавить немного текста, чтобы объяснить, как работает ваш код. – lmo

1
if(x$k[length(x$k)] >= x1$k[length(x1$k)]) x else x1 

Условных заявление, где x$k[length(x$k)] - получает последний элемент из столбца к матрицы х

n m l k 
1 2 2 2 2 
2 3 3 3 3 
3 15 16 17 18 
+0

@ Я серьезно? вы считаете, что оба ответа имеют низкое качество или просто мои? оба указаны в том же формате, и у вас есть проблема с моим ответом. мой код прост, если инструкция со ссылками на сравниваемые значения, почти самоочевидная, если требуется больше объяснений, то обязательно ответ, используя функцию lapply, которая намного менее интуитивно понятна. – Michal

+0

Обратите внимание, что вы также можете использовать 'tail (x $ k, 1)' вместо 'x $ k [length (x $ k)]'. Возможно, это более читаемо, вероятно, нет улучшения скорости. – lmo

Смежные вопросы