我有一个data.table个,如下所示-

temp_dt = structure(list(group = c("A", "A", "B", "C", "D", 
"D", "E", "E"), value = c(28.395, 26.206, 64.032, 
7.588961, 0.053089, 0.053089, 0.795798, 0.795798), type = c("R", 
"P", "R", "R", "R", "P", "R", "P")), row.names = c(NA, -8L), class = c("data.table", 
"data.frame"))

> temp_dt
   group     value type
1:     A 28.395000    R
2:     A 26.206000    P
3:     B 64.032000    R
4:     C  7.588961    R
5:     D  0.053089    R
6:     D  0.053089    P
7:     E  0.795798    R
8:     E  0.795798    P

我想对data.table temp_dt进行子集划分,这样当一个组同时有RP两种类型时,就 Select 了R类型的行.如果组有RP,则 Select 任何可用的.

推荐答案

一个可能的解决方案:

library(data.table)
temp_dt[order(-type),.SD[1,],by=group]

    group     value   type
   <char>     <num> <char>
1:      A 26.206000      R
2:      B 64.032000      R
3:      C  7.588961      R
4:      D  0.053089      R
5:      E  0.795798      R

R相关问答推荐

如何设置搜索栏来搜索整个Shiny应用程序页面?

在水平条形图中zoom x_轴

DT::可数据的正规表达OR运算符问题

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

terra nearest()仅为所有`to_id`列返回NA

如果行和大于值,则过滤

在R中使用数据集名称

如何在ggplot中标记qqplot上的点?

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

如何移除GGPlot中超出与面相交的任何格网像元

在R中,如何将误差条放置在堆叠的每个条上?

提高圣彼得堡模拟的速度

为R中的16组参数生成10000个样本的有效方法是什么?

当由base::限定时,`[.factor`引发NextMethod错误

如何移动点以使它们的打印不重叠

在同一单元格中创建包含整数和百分比的交叉表

将数据从一列转换为按组累计计数的单个虚拟变量

在REST API中使用参数R

从矩阵创建系数图