【问题标题】:Wide to long with pivot_longer and mix of numeric and character data使用 pivot_longer 以及数字和字符数据的混合从宽到长
【发布时间】:2021-12-27 02:40:02
【问题描述】:
help <- data.frame(
        id  = c(100, 100, 101, 102, 102),
        q1 = c(NA, 1, NA, NA, 3),
        q2 = c(1, NA, 2, NA, NA),
        q3 = c(NA, 1, NA, 4, NA),
        q4 = c(NA, NA, 4, NA, 5),
        group = c("a", "b", "c", "a", "c"))
    
    help$group <- as.character(help$group)

我正在尝试旋转更长的时间,因此数据集如下所示:

id  score group
100 NA    a
100 1     b
100 NA    c
...

但是我得到一个错误,q1-q4 的数值和字符串group

pivot_longer(help, !id, names_to = "score", 
             values_to = "group", values_ptypes = list(group = 'character'))
Error: Can't convert <double> to <character>.

我怎样才能在更长时间的同时保留 group 变量(在 q1-4 有多个缺失数据的情况下,每个 id 和 group 都匹配)?

【问题讨论】:

标签: r dplyr tidyr


【解决方案1】:
library(tidyr)

output <- pivot_longer(help, -c(id, group), names_to = "question", 
             values_to = "score") %>% 
  dplyr::select(-question) %>% 
  dplyr::arrange(id, group)

输出

head(output)

# A tibble: 6 × 3
     id group score
  <dbl> <chr> <dbl>
1   100 a        NA
2   100 a         1
3   100 a        NA
4   100 a        NA
5   100 b         1
6   100 b        NA

【讨论】:

    猜你喜欢
    • 2020-03-13
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多