使用pivot_wider函数时,我在列中不知道

时间:2020-10-13 15:04:25

标签: r dplyr

enter image description here

当我执行以下代码时:

data_ikea_wider <- data_ikea_longer %>%
  pivot_wider(id_cols = c(Record_no
                          , Geography
                          , City
                          , Country
                          , City.Country
                          , Year)
                          , names_from = Category, values_from = Value)

这些列仅显示n / a,如所附的打印屏幕所示。

我在做什么错?谢谢!

2 个答案:

答案 0 :(得分:1)

从枢轴获取NA并不意外,这意味着并非所有id列都具有所有“列”。

例如,

dat <- data.frame(col1 = c(1,1,2), col2 = c('a', 'b', 'a'), val = 1:3)
dat
#   col1 col2 val
# 1    1    a   1
# 2    1    b   2
# 3    2    a   3

如果我们想将col1保留为id,并将col2的值转换为新列,那么显然我们将以两行结尾(ida {{1} }和1),以及两个新列(2a)来替换bcol2。不幸的是,由于我们只有三行,所以2行2列= 4个单元格将不会完全填充3个值,因此其中一个将是val

NA

如果看到这并感到惊讶,以为自己确实有数据……那么您应该检查数据的导入和过滤,以确保您没有无意中删除了它(或者最初没有提供它)。

答案 1 :(得分:1)

我们可以使用dcast中的data.table

library(data.table)
setDT(dat)[, col1 ~ col2, value.var = 'val')