r - 整数和因子的 Pivot_longer

标签 r pivot tidyr

我有一个如下所示的数据集。

# A tibble: 1 x 4
  hhm1q001 hhm2q001 hhm1q002 hhm2q002
  <chr>    <chr>    <int>    <int>   
1 blue     red      30       50 

我一直在尝试使用 tidyr::pivot_longer 将其转换为 long 我的预期输出如下所示:

  hhm   q001  q002 
  <int> <chr> <int>
1 1     blue  30   
2 2     red   50

我试过下面的代码

HHS_long <- pivot_longer(HHS_all, 
                         cols= starts_with("hhm"), #identifies the column from which to go from wide to long
                         names_to = ("hhm"), #name(s) of new column(s) created from cols= 
                         values_drop_na = FALSE
)
head(HHS_long)   

不幸的是我收到以下错误 .Error: No common type for hhm1q101 <factor<b5064>> and hhm1q102 <integer>.

不确定如何解决这个问题,我知道它们不是同一类,但我在数据集中有很多变量,它们肯定属于不同的类。 希望这是发布的正确格式。

感谢您的帮助

最佳答案

当我使用新的 pivot_longer 时,我有点挣扎。有时,我觉得在 pivot_longer 之前重命名变量名可能会更容易:

library(tidyverse)
HHS_all <- data.frame(hhm1q001 =  "blue", hhm2q001 =  "red", hhm1q002 = 30, hhm2q002 = 50)

df <- HHS_all %>% 
  rename(q001hhm1 = hhm1q001, q001hhm2 = hhm2q001, 
         q002hhm1 = hhm1q002, q002hhm2 = hhm2q002) 

df %>%
  pivot_longer(everything(), names_to = c(".value", "hhm"), names_sep = "hhm")
# A tibble: 2 x 3
  hhm   q001   q002
  <chr> <fct> <dbl>
1 1     blue     30
2 2     red      50

关于r - 整数和因子的 Pivot_longer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59104203/

相关文章:

r - 清理 R : parsing a complex string 中的数据

r - 需要计算 R 中向量中特定转换的数量

sql - 将 1000 列旋转/透视为行

mysql - sql查询在另一个查询中按经纬度查找用户位置

sql-server - SQL Server 递归 CTE 和数据透视不能一起工作

r - lpSolve 包似乎给出了奇怪的结果

r - 在不强制列表的情况下,数据框可以将向量附加到自身以创建新列吗?

r - 相关矩阵 - tidyrgather v.reshape2melt

r - `names_sep` 中的 `tidyr::pivot_longer` 参数在字符串拆分上是否灵活?

r - 在 Ubuntu 18.04 & R 4.0.2 上安装 tidyr 时出错