您好,我的数据看起来像这样,我需要将其设为矩阵。因此,我运行以下命令:
df2 <- df %>% spread(key = countrybornText, value = permile)
我的问题是,我希望这些列按GDP2012born的顺序排序,并且在我转置时它们按字母顺序显示。知道如何保持我在countrybornText列中的顺序吗?
PD:抱歉,图片我不知道如何正确添加数据样本
您可以确保该列是一个因子,并且其级别按所需顺序排列:
library(dplyr)
library(tidyr)
df$countrybornText <-factor(as.character(df$countrybornText), as.character(df$countrybornText))
df2 <- df %>% spread(key = countrybornText, value = permile)
df2
#> OECD2012 GDP2012 GDP2012born countrynew United States Netherlands Ireland
#> 1 1 56149.67 43355.81 Switzerland NA NA NA
#> 2 1 56149.67 44336.81 Switzerland NA NA NA
#> 3 1 56149.67 44551.62 Switzerland NA NA NA
#> 4 1 56149.67 44829.27 Switzerland NA NA 1
#> 5 1 56149.67 45948.54 Switzerland NA 2 NA
#> 6 1 56149.67 50632.44 Switzerland 3 NA NA
#> Austria Denmark Sweden
#> 1 NA NA 1
#> 2 NA 3 NA
#> 3 9 NA NA
#> 4 NA NA NA
#> 5 NA NA NA
#> 6 NA NA NA
数据:
df <- structure(list(OECD2012 = c(1, 1, 1, 1, 1, 1), GDP2012 = c(56149.67,
56149.67, 56149.67, 56149.67, 56149.67, 56149.67), GDP2012born = c(50632.44,
45948.54, 44829.27, 44551.62, 44336.81, 43355.81), countrynew = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = "Switzerland", class = "factor"),
countrybornText = structure(c(6L, 4L, 3L, 1L, 2L, 5L), .Label = c("Austria",
"Denmark", "Ireland", "Netherlands", "Sweden", "United States"),
class = "factor"), permile = c(3, 2, 1, 9, 3, 1)), class = "data.frame",
row.names = c(NA, -6L))
由reprex package(v0.3.0)在2020-02-18创建