我有一个包含三列的数据帧:GROUP、AMPLATION ORIGIN.我想删除相同组内的重复值.我找不到一种方法来对unique()进行分组,也想不出一种方法来应用case_when().我有许多组值,所以虽然我可以想象如何 for each 组硬编码和if语句,但我想有一种更好的方法来做到这一点.

谢谢!

df <- data.frame(
  Group = c(rep("A",4), rep("B",3), rep("A",2), rep("B",4)),
  Amplitude = c(2,3,5,7,2,4,6,2,4,2,4,6,9),
  Origin = c(rep("Drug", 7), rep("Placebo", 6))
  )

desired_df <- data.frame(
  Group = c(rep("A",5), rep("B",4)),
  Amplitude = c(2,3,4,5,7,2,4,6,9)
  )

>df
| Group | Amplitude | Origin  |
|-------|-----------|---------|
| A     | 2         | Drug    |
| A     | 3         | Drug    |
| A     | 5         | Drug    |
| A     | 7         | Drug    |
| B     | 2         | Drug    |
| B     | 4         | Drug    |
| B     | 6         | Drug    |
| A     | 2         | Placebo |
| A     | 4         | Placebo |
| B     | 2         | Placebo |
| B     | 4         | Placebo |
| B     | 6         | Placebo |
| B     | 9         | Placebo |


>desired_df
| Group | Amplitude |
|-------|-----------|
| A     | 2         |
| A     | 3         |
| A     | 4         |
| A     | 5         |
| A     | 7         |
| B     | 2         |
| B     | 4         |
| B     | 6         |
| B     | 9         |
…

推荐答案

base R

duplicated在这里是一个很好的函数,

df[!duplicated(df[, c("Group", "Amplitude")]),]
#    Group Amplitude  Origin
# 1      A         2    Drug
# 2      A         3    Drug
# 3      A         5    Drug
# 4      A         7    Drug
# 5      B         2    Drug
# 6      B         4    Drug
# 7      B         6    Drug
# 9      A         4 Placebo
# 13     B         9 Placebo

如果你不再需要的话,你可以删除Origin个.

或者,也可以在已设置子集的帧上使用unique.

unique(df[,c("Group", "Amplitude")])

dplyr

dplyr::distinct(df, Group, Amplitude)
#   Group Amplitude
# 1     A         2
# 2     A         3
# 3     A         5
# 4     A         7
# 5     B         2
# 6     B         4
# 7     B         6
# 8     A         4
# 9     B         9

(如果希望保留Origin列,则可以添加.keep_all=TRUE,就像我在base-R示例中所做的那样.)

R相关问答推荐

基于R中的GPS点用方向箭头替换点

在R中创建一个包含转换和转换之间的时间的列

如果行和大于值,则过滤

将. xlsx内容显示为HTML表

LOF中的插图短文字幕

使用RSelenium在R中抓取Reddit时捕获多个标签

悬崖三角洲超大型群数计算导致整数溢出

R如何计算现有行的总和以添加新的数据行

在另一个包中设置断点&S R函数

如何使用FormC使简单算术运算得到的数字是正确的?

在散点图中使用geom_point放置线图例

从线的交点创建面

具有自定义仓位限制和计数的GGPLATE直方图

将美学添加到ggploy中的文本标签

如果极点中存在部分匹配,则替换整个字符串

网络抓取NBA.com

如何创建一个由一个连续变量和一个因素变量组成的复杂方框图?

是什么打破了此Quarto仪表板中的工具提示?

将日期列从字符转换为日期得到的结果是NAS

根据列和行的不同组合 Select 各种单元格