次のデータフレームが与えられた
df <- structure(list(Group = c("A", "A", "B", "B", "C", "C", "D", "D",
"E", "E"), TEST_A = c("neg", "neg", "neg", "neg", "neg", "neg",
"neg", "pos", "pos", "neg"), TEST_B = c("neg", "neg", "neg",
"neg", "neg", "neg", "neg", "neg", "neg", "neg"), RESULT_NOW = c(0L,
0L, 0L, NA, 0L, 0L, 0L, 0L, 0L, 0L), RESULTS_BEFORE = c(0L, 0L,
0L, NA, 0L, 0L, 0L, 0L, 0L, 0L)), row.names = c(NA, 10L), class = "data.frame")
次のように見えます:
> df
Group TEST_A TEST_B RESULT_NOW RESULTS_BEFORE
1 A neg neg 0 0
2 A neg neg 0 0
3 B neg neg 0 0
4 B neg neg NA NA
5 C neg neg 0 0
6 C neg neg 0 0
7 D neg neg 0 0
8 D pos neg 0 0
9 E pos neg 0 0
10 E neg neg 0 0
次のデータフレームを作成したいと思います。
Group TEST_A_1 TEST_A_2 TEST_B_1 TEST_B_1 RESULT_NOW_1 RESULT_NOW_2 RESULTS_BEFORE_1 RESULTS_BEFORE_2
A neg neg neg neg 0 0 0 0
B neg neg neg neg 0 NA 0 NA
C neg neg neg neg 0 0 0 0
...
E pos neg neg neg 0 0 0 0
したがって、実際には、[グループ]列を使用してデータフレームをワイドフォーマットに移動します。グループ列には、グループごとに最大4行を含めることができることに注意してください。この例では、グループごとに2行しかありません。ご協力いただきありがとうございます。
秘訣は、最初にid列を追加することです。2番目のステップでは、簡単に適用tidyr::pivot_wider
して目的の結果を得ることができます。
df <- structure(list(Group = c("A", "A", "B", "B", "C", "C", "D", "D",
"E", "E"), TEST_A = c("neg", "neg", "neg", "neg", "neg", "neg",
"neg", "pos", "pos", "neg"), TEST_B = c("neg", "neg", "neg",
"neg", "neg", "neg", "neg", "neg", "neg", "neg"), RESULT_NOW = c(0L,
0L, 0L, NA, 0L, 0L, 0L, 0L, 0L, 0L), RESULTS_BEFORE = c(0L, 0L,
0L, NA, 0L, 0L, 0L, 0L, 0L, 0L)), row.names = c(NA, 10L), class = "data.frame")
library(dplyr)
library(tidyr)
df %>%
group_by(Group) %>%
mutate(id = row_number(Group)) %>%
ungroup() %>%
pivot_wider(names_from = id, values_from = c(TEST_A, TEST_B, RESULT_NOW, RESULTS_BEFORE))
#> # A tibble: 5 x 9
#> Group TEST_A_1 TEST_A_2 TEST_B_1 TEST_B_2 RESULT_NOW_1 RESULT_NOW_2
#> <chr> <chr> <chr> <chr> <chr> <int> <int>
#> 1 A neg neg neg neg 0 0
#> 2 B neg neg neg neg 0 NA
#> 3 C neg neg neg neg 0 0
#> 4 D neg pos neg neg 0 0
#> 5 E pos neg neg neg 0 0
#> # ... with 2 more variables: RESULTS_BEFORE_1 <int>, RESULTS_BEFORE_2 <int>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加