r - R - 在重复的 ID 和索引中有条件地选择
问题描述
我有一个具有重复 ID 和不同变量的数据框,如下所示:
x <- 1:10
ID <- c(20,20,55,55,45,45,45,45,45,45)
fruit <- c("Orange", "Apple", "Pear", "Apple", "Blueberries", "Apple", "Banana", "Banana", "Strawberry", "Pear")
df <- cbind(x, ID, fruit)
> df
X ID fruit
1 20 Orange
2 20 Apple
3 20 Pear
4 55 Apple
5 55 Blueberries
6 45 Apple
7 45 Banana
8 45 Banana
9 45 Strawberry
10 45 Pear
我需要根据重复 ID 中的层次结构(例如 Orange > Blueberries > Pear > Banana > Apple > Strawberry)有条件地索引某些属性以获取:
X ID fruit
1 20 Orange
5 55 Blueberries
10 45 Pear
真的,我对如何做到这一点没有好的/简单的想法。有什么想法吗?
解决方案
我们arrange
根据'OP's post中指定的'ID'、'fruit'levels
和'降序'顺序的'X',然后按'ID'分组,slice
第一行
library(dplyr)
df %>%
arrange(ID, factor(fruit, levels = c('Orange', 'Blueberries', 'Pear',
'Banana','Apple', 'Strawberry')), desc(X)) %>%
group_by(ID) %>%
slice(1)
# A tibble: 3 x 3
# Groups: ID [3]
# X ID fruit
# <int> <int> <chr>
#1 1 20 Orange
#2 10 45 Pear
#3 5 55 Blueberries
数据
df <- structure(list(X = 1:10, ID = c(20L, 20L, 20L, 55L, 55L, 45L,
45L, 45L, 45L, 45L), fruit = c("Orange", "Apple", "Pear", "Apple",
"Blueberries", "Apple", "Banana", "Banana", "Strawberry", "Pear"
)), class = "data.frame", row.names = c(NA, -10L))
推荐阅读
- node.js - 无法使用 azure devops 将带有角度应用程序的 nodejs 部署到 azure web 应用程序中
- python-3.x - 我应该选择 asyncio 而不是 gevents 在 Python3.x 中实现并行处理吗?
- sql - 如何在excel中显示具有这么多变量的长SQL查询的结果?
- r - 如何使用 ggplot 为不同的组获取单个百分比/比例图?
- java - MQ 重新连接不适用于 Wildfly。如何正确配置?
- visual-studio - 在 Visual Basic 中缩短十六进制字节
- python - Tensorflow 让我的 opencv VideoWriter 失败
- c++ - 如何使用 cppcheck 处理半相对包含路径
- reactjs - useSubscription 钩子的单元测试 - React - Apollo
- uwp-xaml - AdaptiveTriggers 在 UNO 平台 Web 程序集中不起作用?