筛选 R 中两个不同列中具有唯一值的行.验证代码是否正确



>我有一个问题。我正在使用R,我得到了一个看起来像这样的代码。

mydata %>%  
filter(group %in% sample(unique(group), size = 4)) %>%  
group_by(group) %>%  
slice_sample(n = 1) %>%  
ungroup()

但是,现在我遇到了我没有预见到的数据问题。问题是我需要重复代码第二行的操作。而且我不知道这样做是否正确,我需要知道看起来像这样的代码是否正确。

rndmData <- mydata %>% 
filter(group %in% sample(unique(group), size = 4)) %>% 
group_by(group) %>% 
filter(col_3 %in% sample(unique(col_3), size = 4)) %>% 
slice_sample(n = 1) %>% 
ungroup()

所以问题是我需要对数据进行采样,我需要输出为组列的唯一值和col_3列的唯一值。粘贴的代码运行没有错误,但我仍然不知道它是否正确。

为了更清楚起见,我的数据如下所示...

group  col_2  col_3   col_4
A      p_m     12      21
A      q_x     11      21
A      i_z     13      22
B      q_z     11      24
B      p_x     14      25
B      i_m     15      26
B      q_m     17      28
C      p_x     16      29
C      i_z     12      23
C      q_m     14      23
C      q_x     13      25 
D      p_z     11      25
D      i_z     15      26
D      q_m     17      28
D      q_x     14      29
E      p_x     13      30
E      i_m     15      26
E      q_m     17      28
E      p_x     16      29
F      i_z     12      23
F      q_x     13      25 
F      p_z     11      25
F      i_z     15      26
G      q_m     17      28
G      q_z     11      24
G      p_x     14      25
G      i_m     15      26
H      q_x     11      21
H      i_z     13      22
H      q_z     11      24
H      p_x     13      30

所以我想要的结果应该是这样的......

group  col_2  col_3   col_4
A      i_z     13      22
H      q_z     11      24
D      q_m     17      28
F      i_z     15      26

其中组字母不重复,col_3中的值也不重复。

上面的代码正确吗?

更新:代码不正确。它不会为两列提供唯一值。

期望输出是在col_3中获得具有唯一组和唯一值的结果。无论组如何,col_3的唯一值都应该是唯一值。所以如果代码选择

group  col_2  col_3   col_4
A      i_z     13      22

作为其第一个值,它无法从 H 组中选择包含 13 in col_3的值。

group  col_2  col_3   col_4
A      i_z     13      22
H      i_z     13      22

因为col_3中的值不应该重复,所以在取第一个值后,代码应该给我一个第二个、第三个和第四个值,这是一个唯一的组和一个唯一的col_3值。

像这样的东西...

group  col_2  col_3   col_4
A      i_z     13      22
H      q_z     11      24
D      q_m     17      28
F      i_z     15      26

其中组的值不重复,col_3中的值也不重复。

在这里我展示了一个解决方案。

set.seed(1234)
randmData <- mydata %>% 
filter(group %in% sample(unique(group), size = 5)) %>% 
group_by(col_3) %>% 
slice_sample(n = 1) %>% 
ungroup() %>% 
group_by(group) %>% 
slice_sample(n = 1) %>% 
ungroup()

我看到col_3的值在组中没有重复。筛选col_3和组也可以解决问题。