Давайте предположим, что у меня есть это df:
> df <- data.frame(letter = sample(letters[1:4], 15, replace=TRUE),
+ time = c("one", "one", "one", "two", "two", "one", "two", "two", "two", "one","one","one","two","one","two"),
+ stringsAsFactors = FALSE)
> df
letter time
1 d one
2 a one
3 a one
4 b two
5 c two
6 a one
7 d two
8 a two
9 b two
10 b one
11 d one
12 b one
13 c two
14 a one
15 a two
Где я собираюсь сгруппировать их по Value
и создать столбец time_one
и другой столбец с именем time_two
с соответствующими значениямина Value
плюс их соответствующие проценты.Это моя отправная точка:
> x <- df %>%
+ mutate(Value = letter,
+ n = n()) %>%
+ group_by(Value) %>%
+ summarise(Quantity = length(Value),
+ Percentage = first(length(Value)/n))
> x
Value Quantity Percentage
1 a 6 0.4
2 b 4 0.267
3 c 2 0.133
4 d 3 0.2
Как вы можете видеть выше, у меня есть счетчик для каждого Value
, но мне нужно, чтобы каждый Quantity
из каждого Value
был отделен one
и two
значения из столбца времени.Итак, я закончу примерно так:
Value time_one Percentage time_two Percentage
1 a 5 0.5 1 0.2
2 b 2 0.2 2 0.4
3 c 1 0.1 1 0.2
4 d 2 0.2 1 0.2
PS : я проверил два на два таблицу и , создав таблицу для частоты ответов, и они близки к ответу, который я ищу, но, поскольку я до сих пор не очень хорошо понимаю комбинации %>%
, group_by
, mutate
, summarise
, это был своего родаочень крутая кривая обучения, чтобы использовать их, чтобы разделить счет и процент этих решений, чтобы получить то, что мне нужно.