>我有一个问题。我正在使用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和组也可以解决问题。