r - 计算数据框中的重复行和第一个非 NA 出现
问题描述
我有以下示例数据集:
library(tidyverse)
dataset <- data.frame(id = c("A","A","B","B","C","A","C","B"),
value = c(100, 500, 200, 100, 500, 300, 400, 100),
status = c(NA, "Valid", NA, NA, "Pend", NA, NA, NA),
stringsAsFactors = FALSE)
我需要的是提取这个具有最高值的唯一 id,并有多少重复和第一个非 NA 状态。
我以这种方式解决了它:
dataset_count <- dataset %>% group_by(id) %>%
summarise(count = n(), comment = max(status, na.rm = TRUE)) %>% ungroup()
dataset_cross <- dataset %>% arrange(desc(value)) %>%
left_join(dataset_count) %>% distinct(id, .keep_all = TRUE)
但由于我的原始数据集有 120 个变量和更多要遵循的规则,我想知道是否有办法让它更紧凑。例如,我阅读了有关合并的信息,但它不允许我提取分组数据中的第一个 NA。拜托,能给点建议吗?谢谢你。
解决方案
您可以使用 获取最大值,使用for eachmax
计算行数n()
和第一个非 NA 值。which.max
id
library(dplyr)
dataset %>%
group_by(id) %>%
summarise(value = max(value),
count = n(),
status = status[which.max(!is.na(status))])
# id value count status
# <chr> <dbl> <int> <chr>
#1 A 500 3 Valid
#2 B 200 3 NA
#3 C 500 2 Pend
推荐阅读
- javascript - 通过 Twilio Studio 将消息从 WhatsApp 推送到 Twilio Flex 会导致架构验证警告 12200
- api - 使用 api 在 shopify 中添加客户的问题
- ios - MLKit iOS:架构 armv7 的未定义符号
- gtk - Julia + GTK - 回调中的全局变量更改
- javascript - 为什么我无法使用 Jquery 中的追加功能将数据提取到我的 HTML 文件中?
- node.js - 使用 angular-cli 运行测试时遇到 webpack\karma 错误
- wso2 - WSO2 IS 通过代码导入 OAuth 服务提供者
- linux - 为什么 Jenkins 构建按计划停止工作?
- scala - scala 可以从 `Long` 隐式转换为 `AnyRef`
- ios - 使用自定义视图单击搜索时 UISearchBar 不断下降