我正在努力將長資料框轉換為寬版本,但有一些復雜性。我有一列,ID,有重復的條目 - 每個都指一個人的時間點。我還有其他列(即visit和var1)var2,其中報告了有關每個時間點的資料。這是一個可重現的示例:
df <- data.frame(ID=c(1,1,1,1,2,2,2,3,3,3),
visit=c(1,4,5,7,1,3,4,2,5,6),
var1=c("AF","no","no","no","AG","AG","no","BA","BA","BA"),
var2=c("good","good","good","bad","good","good","bad","good","good","good"))
和輸出:
ID visit var1 var2
1 1 1 AF good
2 1 4 no good
3 1 5 no good
4 1 7 no bad
5 2 1 AG good
6 2 3 AG good
7 2 4 no bad
8 3 2 BA good
9 3 5 BA good
10 3 6 BA good
我真的需要最終得到一個資料框,其中每個 僅包含一行ID,每個其他變數包含多列,例如帶有數字后綴(例如visit_1,visit_2等visit_3)。
我想到的輸出是這樣的:
ID visit_1 visit_2 visit_3 visit_4 var1_1 var1_2 var1_3 var1_4 var2_1 var2_2 var2_3 var2_4
1 1 1 4 5 7 AF no no no good good good bad
2 2 1 3 4 NA AG AG no <NA> good good bad <NA>
3 3 2 5 6 NA BA BA BA <NA> good good good <NA>.
其中基本上每個列的條目visit,var1并且var2已被放置在基于該ID列的單獨的順序列中。
我已經嘗試過data.frame::dcastand tidyr::spread,pivot_wider()但似乎這些公式最終會根據實際值生成多列,而不是生成固定列。例如,使用 pivot_wider():
df %>% pivot_wider(names_from = ID, values_from = c("visit","var1","var2"))
它回傳給我一個錯誤說
Warning messages:
1: Values are not uniquely identified; output will contain list-cols.
* Use `values_fn = list` to suppress this warning.
* Use `values_fn = length` to identify where the duplicates arise
* Use `values_fn = {summary_fun}` to summarise duplicates
2: Values are not uniquely identified; output will contain list-cols.
* Use `values_fn = list` to suppress this warning.
* Use `values_fn = length` to identify where the duplicates arise
* Use `values_fn = {summary_fun}` to summarise duplicates
3: Values are not uniquely identified; output will contain list-cols.
* Use `values_fn = list` to suppress this warning.
* Use `values_fn = length` to identify where the duplicates arise
* Use `values_fn = {summary_fun}` to summarise duplicates
任何人都可以幫忙嗎?
uj5u.com熱心網友回復:
您必須為每個組添加一個順序 ID:
library(tidyverse)
df %>%
group_by(ID) %>%
mutate(count = row_number()) %>%
pivot_wider(ID, names_from = count, values_from = c(visit, var1, var2))
# A tibble: 3 x 13
# Groups: ID [3]
# ID visit_1 visit_2 visit_3 visit_4 var1_1 var1_2 var1_3 var1_4 var2_1 var2_2 var2_3 var2_4
# <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 1 1 4 5 7 AF no no no good good good bad
#2 2 1 3 4 NA AG AG no NA good good bad NA
#3 3 2 5 6 NA BA BA BA NA good good good NA
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439408.html
