如何提取列表中每个组中第一列的最后一行?

时间:2019-07-22 21:17:57

标签: r lapply

我一直在尝试编写一个函数,该函数可以提取每个州死亡率最高的酒店名称。下面,我记下了我尝试过的代码,但是输出与正确答案不匹配。

state_data <- state_data[order(state_data$State, state_data$Deaths),]
state_data <- split(state_data, state_data$State)
output <- do.call(rbind, lapply(state_data, function(x) {
  c(x[nrow(x), 1], x[1, 2]) ## x[1,2] returns the state name
}))
data.frame(output)  

我敢肯定还有其他方法可以做到,但是我想知道为什么我无法通过上面的代码获得准确的结果。不胜感激!

1 个答案:

答案 0 :(得分:1)

一种选择是使用[[提取第一列,并使用tail提取最后一个元素

sapply(state_data, function(x) tail(x[[1]], 1))

或在向上分割的数据集上使用dplyr

library(dplyr)
state_data %>%
    group_by(State) %>%
    select(1) %>%
    slice(n())