如何修改和转置杂乱的数据集?
How can I modify and transpose a messy dataset?
我计划将我的数据集从左图转换为右图:
我仍在学习如何使用 R 进行分析,如果有人知道如何在 R 中进行分析,我将不胜感激:)
R
中的 data.table
包中提供了一个很好的功能
dcast(table, Test ~ Column1, value.var = "Preference")
您可以查看函数的功能
here。
还有一个选项可以使用 melt
函数 return 回到 table 的初始长版本。
tidyr
包中的 pivot_wider
应该可以做到这一点
library(tidyverse)
foo <- tibble(
ID = paste0('Female00', c(1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6)),
Test = c('Food', 'Beverage', 'Color', 'Beverage', 'Food', 'Color', 'Food', 'Beverage', 'Food', 'Beverage', 'Color', 'Food', 'Color'),
Preference = c('Strong', 'Strong', 'Medium', 'Low', 'Medium', 'Medium', 'Strong', 'Low', 'Low', 'Strong', 'Low', 'Medium', 'Medium')
)
foo %>%
pivot_wider(
names_from = ID,
values_from = Preference,
values_fill = NA
)
只是转置数据框的问题:
df
Id Test Preference
1 Female001 Food Strong
2 Female001 Beverage Strong
3 Female001 Color Medium
4 Female002 Food Medium
5 Female002 Beverage Low
6 Female003 Color Medium
7 Female003 Food Strong
8 Female003 Beverage Low
> library(tidyr)
> df %>% spread(Id,Preference)
Test Female001 Female002 Female003
1 Beverage Strong Low Low
2 Color Medium <NA> Medium
3 Food Strong Medium Strong
我计划将我的数据集从左图转换为右图:
我仍在学习如何使用 R 进行分析,如果有人知道如何在 R 中进行分析,我将不胜感激:)
R
中的data.table
包中提供了一个很好的功能
dcast(table, Test ~ Column1, value.var = "Preference")
您可以查看函数的功能
here。
还有一个选项可以使用 melt
函数 return 回到 table 的初始长版本。
tidyr
包中的 pivot_wider
应该可以做到这一点
library(tidyverse)
foo <- tibble(
ID = paste0('Female00', c(1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6)),
Test = c('Food', 'Beverage', 'Color', 'Beverage', 'Food', 'Color', 'Food', 'Beverage', 'Food', 'Beverage', 'Color', 'Food', 'Color'),
Preference = c('Strong', 'Strong', 'Medium', 'Low', 'Medium', 'Medium', 'Strong', 'Low', 'Low', 'Strong', 'Low', 'Medium', 'Medium')
)
foo %>%
pivot_wider(
names_from = ID,
values_from = Preference,
values_fill = NA
)
只是转置数据框的问题:
df
Id Test Preference
1 Female001 Food Strong
2 Female001 Beverage Strong
3 Female001 Color Medium
4 Female002 Food Medium
5 Female002 Beverage Low
6 Female003 Color Medium
7 Female003 Food Strong
8 Female003 Beverage Low
> library(tidyr)
> df %>% spread(Id,Preference)
Test Female001 Female002 Female003
1 Beverage Strong Low Low
2 Color Medium <NA> Medium
3 Food Strong Medium Strong