Найдите любимую и проанализируйте последовательность вопросов в R - PullRequest
0 голосов
/ 07 июня 2018

У нас есть ежедневное собрание, когда участники назначают друг друга для выступления.Первый человек выбирается случайно.У меня есть датафрейм, состоящий из имен и порядка речи каждый день.У меня есть day1, day2, day3 и т. Д. В столбцах.Данные в строках являются числами, обозначающими порядок речи в конкретный день.NA означает, что человек не участвовал в этот день.

Name    day1    day2   day3  day4 ...
Albert    1       3     1     ...
Josh      2       2     NA
Veronica  3       5     3
Tim       4       1     2
Stew      5       4     4
...

Я хочу провести два анализа, во-первых, я хочу создать информационный фрейм, который выбрал бы, кого больше всего.(Я знаю, что результат зависит от того, был ли участник назначен ранее, и поэтому в тот день этот участник не может быть снова назначен, я рассмотрю его позже, но пока этого достаточно)

Это должно выглядеть так:

Name      Favorite    
Albert    Stew       
Josh      Veronica       
Veronica  Tim       
Tim       Stew
...

Мои вопросы (не стесняйтесь отвечать только на один, если можете): 1. Какой код я должен использовать для него, без необходимости вручную вводить имена в другой фрейм данных?2. Как мне справиться с галстуком, например, Джош сначала выбрал Веронику и Тима одинаковое количество раз?Позже я хочу визуализировать это, и я понятия не имею, как обращаться со связями.

Я также хотел бы проанализировать результаты, чтобы визуализировать прочные связи.Хотелось бы показать, что есть люди, которые обычно выбирают друг друга и т. Д. Есть ли хороший пакет, который специализируется на этом?Или как мне до него добраться?Мне не нужны последовательности ДНК, только эти простые, но я еще не нашел подходящую.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 07 июня 2018

Если я не неправильно понимаю вашу проблему, вот некоторый код, чтобы узнать количество случаев выбора того, кто будет следующим оратором.Я добавил четвертый день, чтобы иметь некоторое количество, отличное от 1. В результате есть связи, выбор первой пары каждой группы по динамику («кто») может быть решением:

df <- read.table(textConnection(
"Name,day1,day2,day3,day4
Albert,1,3,1,3
Josh,2,2,,2
Veronica,3,5,3,1
Tim,4,1,2,4
Stew,5,4,4,5"),header=TRUE,sep=",",stringsAsFactors=FALSE)

purrr::map(colnames(df)[-1],
   function (x) {
        who <- df$Name[order(df[x],na.last=NA)]
        data.frame(who,lead(who),stringsAsFactors=FALSE)
        }
) %>%
replyr::replyr_bind_rows() %>%
filter(!is.na(lead.who.)) %>%
group_by(who,lead.who.) %>% summarise(n=n()) %>%
arrange(who,desc(n))

Ввод:

      Name day1 day2 day3 day4
1   Albert    1    3    1    3
2     Josh    2    2   NA    2
3 Veronica    3    5    3    1
4      Tim    4    1    2    4
5     Stew    5    4    4    5

Результат:

# A tibble: 12 x 3
# Groups:   who [5]
   who      lead.who.     n
   <chr>    <chr>     <int>
 1 Albert   Tim           2
 2 Albert   Josh          1
 3 Albert   Stew          1
 4 Josh     Albert        2
 5 Josh     Veronica      1
 6 Stew     Veronica      1
 7 Tim      Stew          2
 8 Tim      Josh          1
 9 Tim      Veronica      1
10 Veronica Josh          1
11 Veronica Stew          1
12 Veronica Tim           1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...