当我执行以下代码时:
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,如所附的打印屏幕所示。
我在做什么错?谢谢!
答案 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
),以及两个新列(2
和a
)来替换b
和col2
。不幸的是,由于我们只有三行,所以2行2列= 4个单元格将不会完全填充3个值,因此其中一个将是val
:
NA
如果看到这并感到惊讶,以为自己确实有数据……那么您应该检查数据的导入和过滤,以确保您没有无意中删除了它(或者最初没有提供它)。
答案 1 :(得分:1)
我们可以使用dcast
中的data.table
library(data.table)
setDT(dat)[, col1 ~ col2, value.var = 'val')