【发布时间】:2019-08-14 17:09:24
【问题描述】:
我在R 中使用RStudio 进行数据分析。我目前有一个dataframe,它位于long format 中。我想把它转换成wide format。
dataframe (df1) 的摘录如下所示。我已将第一列转换为factor。
摘录:
df1 <- read.csv("test1.csv", stringsAsFactors = FALSE, header = TRUE)
df1$Respondent <- factor(df1$Respondent)
df1
Respondent Question CS Imp LOS Type Hotel
1 1 Q1 Fully Applied High 12 SML ABC
2 1 Q2 Optimized Critical 12 SML ABC
我想要一个新的dataframe(比如df2)看起来像这样:
Respondent Q1CS Q1Imp Q2CS Q2Imp LOS Type Hotel
1 Fully Applied High Optimized Critical 12 SML ABC
如何在R 中执行此操作?
附加说明:我已尝试查看 tidyr 包及其 spread() 函数,但我很难将其用于解决这个特定问题。
【问题讨论】:
-
tidyr不能一次完成,而是要求您为要传输的每个键/值对执行此操作。有人告诉我,较新的(尚未在 CRAN 上)tidyr::pivot_*函数将更适合更复杂的情况,您可以在 github.com/tidyverse/tidyr 和 tidyr.tidyverse.org/dev/articles/pivot.html 上查看它们。 -
@jay.sf 这与该问题中提到的问题不同。我的有多个值可以转换为宽格式。因此,不能使用该解决方案。