作为对此问题的后续问题:Remove duplicated rows using dplyr,我有以下内容:
如何使用dplyr()(以及其他)随机删除重复的行?
我现在的命令是:
data.uniques <- distinct(data, KEYVARIABLE, .keep_all = TRUE)
但它返回第一次出现的KEYVARIABLE。我希望这种行为是随机的:所以KEYVARIABLE出现1
和n
之间的任何地方。
例如:
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
答案 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))