我一直在尝试编写一个函数,该函数可以提取每个州死亡率最高的酒店名称。下面,我记下了我尝试过的代码,但是输出与正确答案不匹配。
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)
我敢肯定还有其他方法可以做到,但是我想知道为什么我无法通过上面的代码获得准确的结果。不胜感激!
答案 0 :(得分:1)
一种选择是使用[[
提取第一列,并使用tail
提取最后一个元素
sapply(state_data, function(x) tail(x[[1]], 1))
或在向上分割的数据集上使用dplyr
library(dplyr)
state_data %>%
group_by(State) %>%
select(1) %>%
slice(n())