我有一個包含三個識別符號和多個變數的資料框。例如,假設我有一個標識國家的變數,另一個標識個人的變數,第三個標識時間的變數,以及另外兩個變數 var1 和 var2。像下面的資料結構:
set.seed(123)
df1 <- data.frame(country = LETTERS[1:2])
df2 <- data.frame(person = letters[1:3])
df3 <- data.frame(time = 1:3)
df <- merge(df1, df2)
df <- merge(df, df3)
df <- df %>% mutate(var1 = runif(18),
var2 = runif(18))
df <- df %>% arrange(country, person, time)
這將最終得到一個資料框,如:
country person time var1 var2
1 A a 1 0.28757752 0.32792072
2 A a 2 0.52810549 0.65570580
3 A a 3 0.67757064 0.96302423
4 A b 1 0.40897692 0.88953932
5 A b 2 0.55143501 0.54406602
6 A b 3 0.10292468 0.69070528
7 A c 1 0.94046728 0.64050681
8 A c 2 0.95683335 0.28915974
9 A c 3 0.24608773 0.02461368
10 B a 1 0.78830514 0.95450365
11 B a 2 0.89241904 0.70853047
12 B a 3 0.57263340 0.90229905
13 B b 1 0.88301740 0.69280341
14 B b 2 0.45661474 0.59414202
15 B b 3 0.89982497 0.79546742
16 B c 1 0.04555650 0.99426978
17 B c 2 0.45333416 0.14711365
18 B c 3 0.04205953 0.47779597
我想轉換這個資料集,所以我有一列標識每個 var1 和 var2 的每個人。在資料集中,我有 3 個人,a、b 和 c。所以每一行對應一個國家 x 年,我最終會得到 6 列:var1_a、var1_b、var1_c、var2_a、var2_b、var2_c。實作這一目標的最佳方法是什么?
uj5u.com熱心網友回復:
這里有一個解決方案:
library(tidyverse)
pivot_wider(df, id_cols = c(country, time), names_from=person, values_from=c(var1,var2))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/515256.html
上一篇:初識C語言
