简体   繁体   中英

I get n/a in columns when using the pivot_wider function

在此处输入图片说明

when I execute the following code:

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)

The columns just have n/a's as shown in the attached print screen.

What am I doing wrong? Thanks!

Getting NA s from a pivot is not unexpected, it means that not all of your id columns have all "columns".

For example,

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

If we want to pivot keeping col1 as an id, and turning col2 values into new columns, then it should be apparent that we'll end up with two rows (ida 1 and 2 ), and two new columns ( a and b ) to replace col2 and val . Unfortunately, since we only have three rows, the 2 rows 2 columns = 4 cells will not be completely filled with 3 values, so one will be NA :

pivot_wider(dat, col1, names_from = col2, values_from = val)
# # A tibble: 2 x 3
#    col1     a     b
#   <dbl> <int> <int>
# 1     1     1     2
# 2     2     3    NA

If you see this and are surprised, thinking that you actually have the data ... then you should check your data importing and filtering to make sure you did not inadvertently remove it (or it was not provided initially).

We could use dcast from data.table

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM