Выбор случайной выборки и создание нового столбца, который их идентифицирует

#r

Вопрос:

Я работаю с Р.

У меня есть набор данных, который выглядит примерно так…

 Condition  TargetWord             WordProduced        WPcondition                                                                   1          Target1                  table                 A
1          Target1                  word                  B
1          Target1                  chair                 A
1          Target1                  pole                  C
1          Target1                  skate                 D
1          Target2                  car                   B
1          Target2                  house                 A
1          Target2                  shoes                 A
1          Target2                  girl                  A
1          Target2                  life                  C
2          Target3                  computer              D
2          Target3                  ball                  B
2          Target3                  court                 F
2          Target3                  plane                 C
2          Target3                  sky                   D
2          Target4                  tree                  A
2          Target4                  five                  C
2          Target4                  help                  D
2          Target4                  shave                 A
2          Target4                  love                  B                                                  3          Target5                  table                 A
3          Target5                  word                  B
3          Target5                  chair                 A
3          Target5                  pole                  C
3          Target5                  skate                 D
3          Target6                  car                   B
3          Target6                 house                 A
3          Target6                  shoes                 A
3          Target6                  girl                  A
3          Target6                  life                  C
3          Target7                  computer              D
3          Target7                  ball                  B
3          Target7                  court                 F
3          Target7                  plane                 C
3          Target7                  sky                   D
3          Target8                  tree                  A
3          Target8                  five                  C
3          Target8                  help                  D
3          Target8                  shave                 A
3          Target8                  love                  B
 

Так как условия 1 и 2 имеют 10 наблюдений, а условие 3 имеет 20 наблюдений. Мне нужно выбрать случайную выборку из 10 наблюдений условия 3, чтобы правильно сравнить их.

Поэтому мне нужна новая колонка, которая идентифицирует их в новой колонке, чтобы позже проводить различные анализы. Поэтому, я думаю, я не уверен, что оставшиеся значения условия 3 необходимо идентифицировать как NA, чтобы исключить их из некоторых анализов.

Итак, мне нужна эта новая колонка, потому что для некоторых анализов не имеет значения количество наблюдений, но для некоторых других, например, для t-теста, это имеет значение.

Любая помощь была бы очень кстати.

Спасибо.

Ответ №1:

Это даст вам TRUE / FALSE значения в result столбце —

 library(dplyr)

df %>% 
  add_count(Condition) %>%
  group_by(Condition) %>%
  mutate(result = row_number() %in% sample(n(), min(.$n))) %>%
  ungroup %>%
  select(-n)

#   Condition TargetWord WordProduced WPcondition result
#       <int> <chr>      <chr>        <chr>       <lgl> 
# 1         1 Target1    table        A           TRUE  
# 2         1 Target1    word         B           TRUE  
# 3         1 Target1    chair        A           TRUE  
# 4         1 Target1    pole         C           TRUE  
# 5         1 Target1    skate        D           TRUE  
# 6         1 Target2    car          B           TRUE  
# 7         1 Target2    house        A           TRUE  
# 8         1 Target2    shoes        A           TRUE  
# 9         1 Target2    girl         A           TRUE  
#10         1 Target2    life         C           TRUE  
# … with 30 more rows
 

Для условия 3 вы получите 10 случайных TRUE и 10 случайных FALSE .

add_count добавляет количество строк для каждой Condition , так что вы получите 10, 10 и 20 для условия 1, 2 и 3 соответственно. Для каждого Condition затем мы выбираем min(.$n) строки, которые здесь равны 10, так как это минимальное количество строк, которое есть в любой группе.

Комментарии:

1. Здравствуйте, не могли бы вы объяснить, что вы сделали в круглой скобке мутировать. Что я понимаю, так это то, что add_count добавляет уникальный номер к каждому наблюдению. Затем вы группируетесь по условию. Но я теряюсь в том, что происходит после «select =» в круглой скобке mutate. Кроме того, что делает select(-n)? Спасибо за это.

2. select(-n) удаляет столбец n , который мы добавили add_count . Чтобы избежать путаницы, я переименовался select в result . Я также добавил некоторое объяснение кода в отредактированный ответ.

Ответ №2:

Следующий код группируется по условиям и выбирает n (10) случайных строк из каждой группы. Если n-наименьшее число из всех групп, вы можете сначала вычислить его и вставить в последний вызов.

 library(dplyr)
df %>% group_by(Condition) %>% sample_n(size=10)
 

Комментарии:

1. Хотя этот фрагмент кода может решить вопрос, включая объяснение , действительно помогает улучшить качество вашего поста. Помните, что в будущем вы будете отвечать на этот вопрос для читателей, и эти люди могут не знать причин вашего предложения кода.