>source

이것은 이것에 대한 후속 질문입니다.

이 질문을 해결한 후 stefan이 제공한 솔루션을 다음을 사용하여 더 큰 데이터 프레임에 적용하고 싶었습니다.group_by:

내 데이터 프레임:

df <-structure(list(test_id= c(1, 1, 1, 1, 1, 1, 1, 1), test_nr= c(1,
1, 1, 1, 2, 2, 2, 2), region= c("A", "B", "C", "D", "A", "B",
"C", "D"), test_value= c(3, 1, 1, 2, 4, 2, 4, 1)), class= "data.frame", row.names= c(NA,
-8L))
  test_id test_nr region test_value
1       1       1      A          3
2       1       1      B          1
3       1       1      C          1
4       1       1      D          2
5       1       2      A          4
6       1       2      B          2
7       1       2      C          4
8       1       2      D          1

이제 각 그룹에 새 행을 추가하려고 합니다. 이 code는 오류를 제공합니다.

df %>%
  group_by(test_nr) %>%
  add_row(test_id= .$test_id[1], test_nr= .$test_nr[1], region= "mean", test_value= mean(.$test_value))
Error: Can't add rows to grouped data frames.
Run `rlang::last_error()` to see where the error occurred.

내 예상 출력은 다음과 같습니다.

test_id test_nr region test_value
1        1       1      A       3.00
2        1       1      B       1.00
3        1       1      C       1.00
4        1       1      D       2.00
5        1       1   MEAN       1.75
6        1       2      A       4.00
7        1       2      B       2.00
8        1       2      C       4.00
9        1       2      D       1.00
10       1       2   MEAN       2.75

지금까지 시도해 본 결과:

library(tidyverse)
df %>%
  group_by(test_nr) %>%
  group_split() %>%
  map_dfr(~ .x %>%
            add_row(!!! map(.[4], mean)))
   test_id test_nr region test_value
                 1       1       1 A            3
 2       1       1 B            1
 3       1       1 C            1
 4       1       1 D            2
 5      NA      NA NA           1.75
 6       1       2 A            4
 7       1       2 B            2
 8       1       2 C            4
 9       1       2 D            1
10      NA      NA NA           2.75

1~3열을 수정하여 내 값을 거기에 배치하려면 어떻게 해야 하나요?

group_modify(., ~add_row(…))로 시도하십시오.

Maël2022-02-14 10:57:14
  • 이전 Haskell에서 주어진 문자열의 각 문자 사이에 n개의 공백 추가
  • 다음 http : Envoy: REST 게이트웨이 + 여러 GRPC 클러스터