使用dplyr()随机删除重复的行

时间:2017-08-21 20:03:50

标签: r dplyr

作为对此问题的后续问题:Remove duplicated rows using dplyr,我有以下内容:

如何使用dplyr()(以及其他)随机删除重复的行?

我现在的命令是:

data.uniques <- distinct(data, KEYVARIABLE, .keep_all = TRUE)

但它返回第一次出现的KEYVARIABLE。我希望这种行为是随机的:所以KEYVARIABLE出现1n之间的任何地方。

例如:

KEYVARIABLE BMI
1 24.2
2 25.3
2 23.2
3 18.9
4 19
4 20.1
5 23.0

目前我的命令返回:

KEYVARIABLE BMI
1 24.2
2 25.3
3 18.9
4 19
5 23.0

我希望它随机返回n个重复行之一,例如:

KEYVARIABLE BMI
1 24.2
2 23.2
3 18.9
4 19
5 23.0

3 个答案:

答案 0 :(得分:6)

在选择第一次出现之前填充行(使用 Excel.Worksheet xlWorkSheet = (Excel.Worksheet)excelWorkbook.Sheets[sheetSpaces]; Excel.Range col = (Excel.Range)xlWorkSheet.Columns["A:A", Type.Missing]; Excel.Range colB = (Excel.Range)xlWorkSheet.Columns["B:B", Type.Missing]; foreach (Excel.Range item in col.Cells) { string text = (string)item.Text; if (text == "Good") { Console.WriteLine(text); foreach (Excel.Range itemSub in colB.Cells) { string textSub = (string)itemSub.Text; } } } } )。

distinct

答案 1 :(得分:5)

一种选择是分组&#39; KEYVARIABLE&#39;然后sample行序列选择行和子集数据集

library(data.table)
setDT(df1)[, .SD[sample(.N)[1]], KEYVARIABLE]

或使用dplyr

library(dplyr)
df1 %>% 
   group_by(KEYVARIABLE) %>%
   sample_n(1)

答案 2 :(得分:1)

使用dplyr

df%>%dplyr::mutate(A=sample(1:dim(df)[1]))%>%group_by(KEYVARIABLE)%>%dplyr::slice(which.min(A))