#r #pivot #reshape
#r #сводная #изменить форму
Вопрос:
У меня есть следующий фрейм данных, и я пытаюсь изменить его из длинного в широкий, используя функцию pivot_wider, но, похоже, не могу определить ошибку.
'data.frame': 376654 obs. of 3 variables:
$ Investment.ID : int 4 4 4 4 4 4 4 4 4 5 ...
$ Attribute.Column: chr "Active Relationship Type" "Asset Class" "CEM Survey Classification" "Emerging Manager Detail" ...
$ Attribute.Name : chr "Non-Core" "Private Equity" "External (incl. Growth Equity amp; Energy)" "MWBE" ...
tbl.PivotedInvAttrStacked <- pivot_wider(tbl.InvestAttrStacked,
names_from = tbl.InvestAttrStacked$Attribute.Column,
values_from = tbl.InvestAttrStacked$Attribute.Name,
values_fill = NULL)
Error: Can't subset columns that don't exist.
x Columns `Active Relationship Type`, `Asset Class`, `CEM Survey Classification`, `Emerging Manager Detail`, `Emerging Manager Detail L2`, etc. don't exist.
Спасибо за помощь.
Комментарии:
1. Пожалуйста
dput(tbl.InvestAttrStacked)
, вставьте свой вопрос, чтобы помочь вам!
Ответ №1:
Для names_from
друзей ссылайтесь на имя столбца, а не на сам столбец.
z <- data.frame(ID = c(4,4,4,4), Attribute.Column=c("Active", "Asset", "CEM", "Emerging"), Attribute.Name=c("Non-Core", "Private Equity", "External (incl. Growth Equity amp; Energy)", "MWBE"))
z
# ID Attribute.Column Attribute.Name
# 1 4 Active Non-Core
# 2 4 Asset Private Equity
# 3 4 CEM External (incl. Growth Equity amp; Energy)
# 4 4 Emerging MWBE
library(dplyr)
library(tidyr)
z %>%
pivot_wider("ID", names_from="Attribute.Column", values_from="Attribute.Name", values_fill = NULL)
# # A tibble: 1 x 5
# ID Active Asset CEM Emerging
# <dbl> <chr> <chr> <chr> <chr>
# 1 4 Non-Core Private Equity External (incl. Growth Equity amp; Energy) MWBE
Это также работает с нестандартной оценкой (NSE):
z %>%
pivot_wider(ID, names_from=Attribute.Column, values_from=Attribute.Name, values_fill = NULL)