r - 按数据框分组并在 r 中的每个组内获取一行特定索引
问题描述
我有一个像
ProjectID Dist
1 x
1 y
2 z
2 x
2 h
3 k
.... ....
和一个长度索引的向量,unique(df$ProjectID)
如
2
3
1
....
我想通过 ProjectID 获取 Dist,其索引是与项目 ID 对应的元素向量。所以我想要的结果看起来像
ProjectID Dist
1 y
2 h
3 k
.... ....
我试过了
aggregate(XRKL ~ ID, FUN=..?, data=df)
但我不确定我可以把索引向量放在哪里。有没有办法从 dply ftns、tapply 或聚合中获得正确的结果?还是我需要自己做一个功能?谢谢你。
解决方案
您可以在数据框本身中添加索引,然后从每个组中选择该行。
inds <- c(2, 3, 1)
df %>%
mutate(inds = inds[match(ProjectID, unique(ProjectID))]) %>%
#If ProjectID is sequential like 1, 2, 3
#mutate(inds = inds[ProjectID]) %>%
group_by(ProjectID) %>%
slice(first(inds)) %>%
ungroup() %>%
select(-inds)
# ProjectID Dist
# <int> <chr>
#1 1 y
#2 2 h
#3 3 k
数据
df <- structure(list(ProjectID = c(1L, 1L, 2L, 2L, 2L, 3L), Dist = c("x",
"y", "z", "x", "h", "k")), class = "data.frame", row.names = c(NA, -6L))
推荐阅读
- c# - 使用 Newtonsoft Json.Net 反序列化字符串化(引号括起来)嵌套对象
- c++ - 向量元素的移动分配不起作用,而是调用复制分配
- html - HTML 文件不会连接到 CSS
- build - 在 Azure DevOps 中将一个存储库构建到另一个存储库
- reactjs - 这是关于设置路由路由的问题
- python - 将整数转换为日期时间值 pandas
- c++ - 如何更快地计算反转
- google-bigquery - BigQuery 错误?影响名称间距的反引号
- python - 每天在 heroku 上的 django-rest api 中运行一个脚本
- python-3.x - Matplotlib 文本被裁剪