[英]R: Problems with pivot_wider()
我有以下示例數據:
varNames <- c("var1", "var2", "var3", "var4", "var5")
df <- data.frame(VariableID = rep(varNames, 5),
Serial = rep(1:5, 5),
Response = runif(25, 1, 10))
df
我要找的表格是這樣的:
Serial var1 var2 var3 var4 var5
1 ... ... ... ... ...
1
1
1
1
2
2
2
2
2
3
3
3
3
3
...
我正在嘗試這個:
df %>% pivot_wider(id_cols = Serial, names_from = VariableID, values_from = Response)
我得到的輸出如下所示:
# A tibble: 5 x 6
Serial var1 var2 var3 var4 var5
<int> <list> <list> <list> <list> <list>
1 1 <dbl [5]> <NULL> <NULL> <NULL> <NULL>
2 2 <NULL> <dbl [5]> <NULL> <NULL> <NULL>
3 3 <NULL> <NULL> <dbl [5]> <NULL> <NULL>
4 4 <NULL> <NULL> <NULL> <dbl [5]> <NULL>
5 5 <NULL> <NULL> <NULL> <NULL> <dbl [5]>
我究竟做錯了什么? 感謝幫助!
嘗試這個。 問題是行需要一個 id。 可以使用row_number()
達到。 這里的代碼:
library(tidyverse)
#Code
newdf <- df %>%
arrange(Serial) %>%
group_by(Serial) %>% mutate(id=row_number()) %>%
pivot_wider(names_from=VariableID,values_from=Response) %>% select(-id)
輸出:
# A tibble: 25 x 6
# Groups: Serial [5]
Serial var1 var2 var3 var4 var5
<int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 5.52 NA NA NA NA
2 1 5.50 NA NA NA NA
3 1 5.13 NA NA NA NA
4 1 7.88 NA NA NA NA
5 1 3.49 NA NA NA NA
6 2 NA 3.68 NA NA NA
7 2 NA 7.54 NA NA NA
8 2 NA 9.63 NA NA NA
9 2 NA 1.09 NA NA NA
10 2 NA 3.12 NA NA NA
# ... with 15 more rows
您可以將unnest()
添加到您的函數中。 因此列表將被拆分成行。
df %>% pivot_wider(id_cols = Serial,
names_from = VariableID,
values_from = Response) %>%
unnest()
輸出:
# A tibble: 25 x 6
Serial var1 var2 var3 var4 var5
<int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 3.51 NA NA NA NA
2 1 4.65 NA NA NA NA
3 1 4.15 NA NA NA NA
4 1 4.60 NA NA NA NA
5 1 1.74 NA NA NA NA
6 2 NA 6.42 NA NA NA
7 2 NA 3.50 NA NA NA
8 2 NA 1.84 NA NA NA
9 2 NA 9.03 NA NA NA
10 2 NA 4.78 NA NA NA
# ... with 15 more rows
我們可以使用data.table
rowid
創建 ID
library(dplyr)
library(data.table)
library(tidyr)
df %>%
arrange(Serial) %>%
mutate(id = rowid(Serial)) %>%
pivot_wider(names_from = VariableID, values_from = Response) %>%
select(-id)
-輸出
# A tibble: 25 x 6
# Serial var1 var2 var3 var4 var5
# <int> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 9.00 NA NA NA NA
# 2 1 7.17 NA NA NA NA
# 3 1 3.47 NA NA NA NA
# 4 1 9.53 NA NA NA NA
# 5 1 2.99 NA NA NA NA
# 6 2 NA 1.83 NA NA NA
# 7 2 NA 3.65 NA NA NA
# 8 2 NA 5.91 NA NA NA
# 9 2 NA 8.91 NA NA NA
#10 2 NA 7.75 NA NA NA
# … with 15 more rows
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.