r - 提取包含不同列中指定值的值
问题描述
我有这个数据集:
case_number <- c("1", "1", "2", "2", "2", "3", "3")
type <- c("STD", "STD2", "STD", "STD2", "STD", "STD", "STD2")
date <- as.Date(c('2008-11-1','2009-3-25','2010-3-14','2010-10-14',
'2010-11-14', '2015-3-14', '2015-4-15'))
data <- data.frame(case_number,type, date)
我想知道如何提取case_number
包含"STD2"
按日期排序的最后一个类型的唯一性?
在这种情况下,它将是 1 和 3,因为它们将 STD2 作为按日期排序的最后一个类型。
解决方案
如果您只想要数字,则可以使用 tapply(假设您的数据已按每个 case_number 中的日期排序)
case_nums <- with(data, tapply(type == 'STD2', case_number, tail, 1))
names(case_nums)[case_nums]
# [1] "1" "3"
如果要对这些 case_numbers 进行子集化,可以使用 dplyr
library(dplyr)
data %>%
group_by(case_number) %>%
filter(type[which.max(date)] == 'STD2')
# # A tibble: 4 x 3
# # Groups: case_number [2]
# case_number type date
# <fct> <fct> <date>
# 1 1 STD 2008-11-01
# 2 1 STD2 2009-03-25
# 3 3 STD 2015-03-14
# 4 3 STD2 2015-04-15
推荐阅读
- r - 如何在 R 中运行宏并从 Excel 复制工作表
- c++ - 通过 C 绑定公开 C++ 库
- python - 用pygame蹲在python平台游戏中
- node.js - 为每个请求快速重置会话
- python - 如何创建一个 array.array 字典?
- javascript - 为什么我在 SonarQube 安全报告中看不到任何漏洞?
- c# - 如何从内存中制作outlook邮件附件?
- c# - 通过忽略一些属性来比较两个自定义列表对象
- react-native - 无法解析模块 react-native/Libraries/Components/View/ViewStylePropTypes
- google-tag-manager - 是否可以在 GTM 的不同环境中包含不同的标签?