r - 通过 R 中的列中的唯一值对数据框进行子集
问题描述
您好,我有一个数据框,例如
Group COL1 Event
G1 SP1 1
G1 SP2 1
G1 SP3 2
G1 SP3 2
G2 SP4 3
G2 SP7 3
G2 SP5 6
G3 SP1 1
G4 SP1 6
如果是唯一的,我只想保留 COL1 Event
(例如,SP3 和 SP5 在事件列中是唯一的)。
然后我应该得到:
Group COL1 Event
G1 SP3 2
G1 SP3 2
G2 SP5 6
G3 SP1 1
G4 SP1 6
SP1
并且SP2
在列中是 2,Event1
所以他们没有通过
SP4
并且SP7
在列中是 2,Event3
所以他们没有通过
解决方案
您可以使用 data.table 进行分组,Group
并且仅当唯一 COL1 值 ( ) 的数量为 1Event
时才返回组内容 ( ) 。.SD
uniqueN(COL1)
library(data.table)
setDT(df)
df[, if(uniqueN(COL1) == 1) .SD, by = .(Group, Event)]
# Group Event COL1
# 1: G1 2 SP3
# 2: G1 2 SP3
# 3: G2 6 SP5
# 4: G3 1 SP1
# 5: G4 6 SP1
使用的数据:
df <- fread('
Group COL1 Event
G1 SP1 1
G1 SP2 1
G1 SP3 2
G1 SP3 2
G2 SP4 3
G2 SP7 3
G2 SP5 6
G3 SP1 1
G4 SP1 6
')
推荐阅读
- iis - 您可以在 IIS asp net core 中将 requestTimeout 设置为 1 分钟以下吗?
- python - 当 num epoch 设置为 None 时,tensorflow 训练无休止
- swift - 使用 Swift 在 FireBase 数据库中发生更改时如何获取计数值?
- sql-server - 将数据从 Excel 导入 SQL Server 时如何处理外键
- ios - Alamofire 4 重试器和适配器无法看到更改的 accessToken
- asp.net - Visual Studio 缺少正文元素
- mailchimp - MailChimp 多次发送同一封电子邮件
- mvvm - MVVM,放置/处理 ui 事件的位置,例如“onClick”
- java - 尝试遍历数组中的数组
- aem - AEM/Sling:如何实现动态吊索选择器?