Я борюсь с тем, что, как я надеюсь, является довольно простой проблемой при переносе кадра данных.
Мой фрейм данных имеет такую структуру:
Measure = c("Heightpercentile", "Weightpercentile", "Shoesize")
Value = c(56,60,10,45,48,7,78,60,9)
Person = c("ID4", "ID4", "ID4", "ID6", "ID6", "ID6", "ID7", "ID7", ID7")
Итак, у меня есть три столбца и (в этом примере) девять строк, по три строки для каждого ID#.
И мне бы хотелось такую структуру:
Person= c("ID4", "ID6", "ID7")
Heightpercentile = c(56,45,78)
Weightpercentile = c(60,47,60)
Shoesize = (10,7,9)
Итак, четыре столбца и три строки, по одной строке для каждого ID#.
Я пытался работать с транспонированием и смотрел на опорную точку от dplyr, но ничего не понял. Спасибо!
Вы можете использовать pivot_wider
:
library(tidyr)
pivot_wider(df,names_from= "Person",values_from = "Value")
# Measure ID4 ID6 ID7
# <chr> <dbl> <dbl> <dbl>
#1 Heightpercentile 56 45 78
#2 Weightpercentile 60 48 60
#3 Shoesize 10 7 9
или с data.table
:
library(data.table)
setDT(df)
dcast(df,Measure~Person,value.var = "Value")
#Key: <Measure>
# Measure ID4 ID6 ID7
# <char> <num> <num> <num>
#1: Heightpercentile 56 45 78
#2: Shoesize 10 7 9
#3: Weightpercentile 60 48 60
данные:
df <- data.frame(Measure = c("Heightpercentile", "Weightpercentile", "Shoesize"),
Value = c(56,60,10,45,48,7,78,60,9),
Person = c("ID4", "ID4", "ID4", "ID6", "ID6", "ID6", "ID7", "ID7", "ID7"))