在tidyverse中跨组使用配对数据
我对几个小组中的每个小组都进行了多次观察,我想制作一个QQ图矩阵(或其他类型的图),将每个小组与其他小组进行比较 下面是我所说的一个例子:在tidyverse中跨组使用配对数据,r,grouping,tidyverse,reshape2,R,Grouping,Tidyverse,Reshape2,我对几个小组中的每个小组都进行了多次观察,我想制作一个QQ图矩阵(或其他类型的图),将每个小组与其他小组进行比较 下面是我所说的一个例子: library(tidyverse) set.seed(27599) n <- 30 d <- data_frame(person = c(rep('Alice', n), rep('Bob', n), rep('Charlie', n),
library(tidyverse)
set.seed(27599)
n <- 30
d <- data_frame(person = c(rep('Alice', n),
rep('Bob', n),
rep('Charlie', n),
rep('Danielle', n)),
score = c(rnorm(n = n),
rnorm(n = n, mean = 0.1),
rnorm(n = n, sd = 2),
rnorm(n = n, mean = 0.3, sd = 1.4)))
by_hand <- data_frame(a = sort(d$score[d$person == 'Alice']),
b = sort(d$score[d$person == 'Bob']),
c = sort(d$score[d$person == 'Charlie']),
d = sort(d$score[d$person == 'Danielle']))
pairs(x = by_hand,
lower.panel = function(x, y) { points(x, y); abline(0, 1);})
这似乎很有希望
d %>%
group_by(person) %>%
mutate(score = sort(score)) %>%
spread(key = person, value = score)
这会产生“重复标识符”错误。
也许在这里使用更合适
d %>%
group_by(person) %>%
mutate(score = sort(score)) %>%
dcast(formula = score ~ person)
这将创建一个包含120行的data.frame,大多数值(每人90行)都是NA。如何创建一个宽的data.frame而不引入这么多NA?您需要一个变量来链接每个人的行位置。试一试
by_tidyverse <- d %>%
group_by(person) %>%
mutate(rowID=1:n(),
score=sort(score)
) %>%
spread(key = person, value = score) %>%
select(-rowID)
pairs(x = by_tidyverse, lower.panel = function(x, y) { points(x, y); abline(0, 1);})
by_tidyverse%
分组单位(人)%>%
突变(rowID=1:n(),
分数=排序(分数)
) %>%
价差(关键=人,价值=分数)%>%
选择(-rowID)
成对(x=by_tidyverse,lower.panel=function(x,y){点(x,y);abline(0,1);})
by_tidyverse <- d %>%
group_by(person) %>%
mutate(rowID=1:n(),
score=sort(score)
) %>%
spread(key = person, value = score) %>%
select(-rowID)
pairs(x = by_tidyverse, lower.panel = function(x, y) { points(x, y); abline(0, 1);})