summarise () 출력을 행렬로 변환

르노 루지 안

summarise()함수 의 출력을 원하는 3 개의 행렬로 바꾸는 가장 짧은 방법은 무엇 일까요?

z <- "group    y1    y2
1 1         2     3
2 1         3     4
3 1         5     4
4 1         2     5
5 2         4     8
6 2         5     6
7 2         6     7
8 3         7     6
9 3         8     7
10 3        10     8
11 3         9     5
12 3         7     6"

dat <- read.table(text = z, header = T)

dat %>% 
  group_by(group) %>%
  summarise(cov = cov(y1, y2) * (n() - 1),
            across(c(y1, y2), ~ var(.) * (n() - 1)))

#  group   DV1   DV2   cov
#1     1   6     2     0  
#2     2   2     2    -1  
#3     3   6.8   5.2   2.6

원하는 출력 :

group1 = matrix(c(6,0,0,2),2)
group2 = matrix(c(2,-1,-1,2),2)
group3 = matrix(c(6.8,2.6,2.6,5.2),2)
Akrun

우리는 훨씬 더 간단한 방법으로 이것을 할 수 있습니다. "그룹"으로 그룹화 한 후, 생성 list컬럼에 summarise복용으로 covmatrix의해 생성을 cbind곱함으로써 다음, 'Y2'을 ', Y1'를 보내고, 및n() - 1

out <-  dat %>% 
            group_by(group) %>%
            summarise(mat1 = list(cov(cbind(y1, y2)) * (n() - 1)), 
               .groups = 'drop')

-산출

out$mat1
#[[1]]
#     [,1] [,2]
#[1,]    6    0
#[2,]    0    2

#[[2]]
#     [,1] [,2]
#[1,]    2   -1
#[2,]   -1    2

#[[3]]
#     [,1] [,2]
#[1,]  6.8  2.6
#[2,]  2.6  5.2

또는 이것은 group_splitmap

library(purrr)
dat %>%
     group_split(group, .keep = FALSE) %>%
     map(~ cov(.x) * (nrow(.x) - 1))

에서 base R, 우리가 사용할 수 있습니다split

lapply(split(dat[c('y1', 'y2')], dat$group), 
        function(x) cov(x) * (nrow(x) - 1))

세 개의 '그룹'개체를 만들어야하는 경우 list2env

library(stringr)
deframe(out) %>%
     set_names(str_c('group', seq_along(.))) %>% 
     list2env(.GlobalEnv)



group1
#     [,1] [,2]
#[1,]    6    0
#[2,]    0    2
group2
#     [,1] [,2]
#[1,]    2   -1
#[2,]   -1    2

group3
#     [,1] [,2]
#[1,]  6.8  2.6
#[2,]  2.6  5.2

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

dplyr :: summarise의 출력 정렬

분류에서Dev

셀을 행렬로 변환

분류에서Dev

행렬을 열로 변환

분류에서Dev

적용시 행렬에서 벡터로 변환 된 출력

분류에서Dev

입력 행렬을 원래 요소를 누적 값으로 대체하는 출력으로 변환

분류에서Dev

출력을 Excel로 LibreOffice로 변환

분류에서Dev

행렬을 R의 누적 행 평균 행렬로 변환

분류에서Dev

행 행렬을 Breeze Dense 행렬로 변환

분류에서Dev

관계 쌍을 행렬로 변환

분류에서Dev

사전의 값을 행렬로 변환

분류에서Dev

Rcpp : 행렬을 벡터로 변환

분류에서Dev

Julia-행렬을 벡터로 변환

분류에서Dev

Rcpp : 행렬을 벡터로 변환

분류에서Dev

Excel : 두 목록을 행렬로 변환

분류에서Dev

Ruby : 문자열을 행렬로 변환

분류에서Dev

출력 쉘을 JSON으로 변환

분류에서Dev

GraphFrame 출력을 Pandas DataFrame으로 변환

분류에서Dev

쿼리 출력을 xml로 변환

분류에서Dev

Python 출력을 문장으로 변환

분류에서Dev

컬러 출력을 html로 변환

분류에서Dev

sqlite 출력을 json으로 변환

분류에서Dev

script (1)의 출력을 pdf로 변환

분류에서Dev

asciinema 출력을 gif로 변환

분류에서Dev

2D 희소 행렬을 3D 행렬로 변환

분류에서Dev

비대칭 행렬을 정사각형 행렬로 변환

분류에서Dev

교차 거리 행렬을 거리 행렬로 변환

분류에서Dev

논리 행렬 (TRUE / FALSE)을 문자 행렬 (Present / Absent)로 변환

분류에서Dev

하나의 행렬을 여러 행렬로 변환

분류에서Dev

4d 행렬을 3d 행렬 R로 변환