【问题标题】:Selecting at random specific values from data frame [duplicate]从数据框中随机选择特定值[重复]
【发布时间】:2019-07-24 19:41:33
【问题描述】:

我有一个由ID 列、clones 列和“隔离”列组成的数据框。

每个 ID 在 ID 列中出现多次,并与克隆列中的不同克隆相关联,称为克隆 1、克隆 2、克隆 3 等,它们来自不同的分离株。每个ID也可能有多次相同的克隆

例如

ID  clones  Isolate
ID1 clone1    1
ID1 clone1    2 
ID1 clone1    3 
ID2 clone1    4
ID2 clone1    5
ID2 clone2    6
ID2 clone2    7
ID3 clone1    8
ID3 clone1    9
ID3 clone2    10
ID3 clone3    11
ID3 clone3    12

我想为每个唯一 ID 随机选择一个代表每个克隆。

我希望得到这样的输出:

ID  clones   Isolate
ID1 clone1      2
ID2 clone1      5
ID2 clone2      6
ID3 clone1      8
ID3 clone2     10
ID3 clone3     12

随机选择每个 ID 的代表性克隆,因此随机隔离列

【问题讨论】:

  • 我不确定我是否理解正确。 dplyr::distinct()是你想要的吗?
  • 只需做一个unique(df1)
  • 所以在我的示例中,ID 列中的 ID3 有两个克隆 1、一个克隆 2 和两个克隆 3。我希望随机选择每个 ID 的每个克隆的代表,所以我想选择ID3随机一个克隆1,一个克隆2和一个克隆3。我想为每个不同的 ID 执行此操作
  • 对不起,我不清楚,我的数据框还有其他列,每行都不同,所以使用唯一不起作用,我将编辑问题以显示这一点

标签: r


【解决方案1】:

您似乎可以使用刚才提出的类似问题的结果:How to use R to identify twins, and then randomly select and remove one?

如果您使用 dplyr 的 group_by 函数,用于 ID 和克隆,以及其中的 sample_n(1),您应该只为每个 ID 和克隆对获得一个代表。借用@Andrew Gustar 的回答:

library(dplyr)

df %>% 
  group_by(ID, clones) %>% 
  sample_n(1)

【讨论】:

  • 如果您认为这是与现有问题的重复,最好将其标记为这样,而不是添加重复的答案
猜你喜欢
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 2018-01-13
  • 1970-01-01
  • 2019-06-06
  • 2019-03-06
相关资源
最近更新 更多