множественное условие, затем создание нового столбца - PullRequest
0 голосов
/ 16 октября 2019

У меня есть набор данных с двумя столбцами, мне нужно создать третий столбец, содержащий условия для первого и второго столбцов.

set.seed(1)
x1=(sample(1:10, 100,replace=T))
y1=sample(seq(1,10,0.1),100,replace=T)

z=cbind(x1,y1)
unique(as.data.frame(z)$x1)
z%>%as.data.frame()%>%dplyr::filter(x1==3)

table(x1)
 1  2  3  4  5  6  7  8  9 10 
 7  6 11 14 14  5 11 15 11  6 

> z%>%as.data.frame()%>%dplyr::filter(x1==3)
   x1   y1
1   3  6.9
2   3  9.5
3   3 10.0
4   3  5.6
5   3  4.1
6   3  2.5
7   3  5.3
8   3  9.5
9   3  5.5
10  3  8.9
11  3  1.2

например, когда я фильтрую x == 3, тогда можно увидеть значения y1, мне нужно написать 1 в 11-й строке, остальные будут равны 0. Мне нужно найти минимум в этом столбце. В моем исходном наборе данных 43545 строк, но только 638 ​​уникальных чисел, таких как x1. Таблица x1 показывает, что 1 повторяется 7 раз, но в моем наборе данных некоторые имеют частоту 1, некоторые имеют частоту 100. Я должен использовать case_when, но как я могу проверить каждый y1, чтобы найти наименьшее значение для 1?

1 Ответ

0 голосов
/ 16 октября 2019

Если я правильно понимаю, вы ищете строку с минимальным значением y1 для каждого значения x1

library(tidyverse)
z %>% as.data.frame() %>% 
      group_by(x1) %>% 
      arrange(y1) %>% # sort values by increasing order within each group
      mutate(flag = ifelse(row_number()==1,1,0)) %>% # create flag for first row in group
      ungroup()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...