从宽到长,并将名称合并为行名 [英] wide to long and col name into row name

查看:9
本文介绍了从宽到长,并将名称合并为行名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表格,如下所示:

  v1 <- c("A","B","C")
  v2 <- c("E","G","")
  v3 <- c("B","C","D")
  df1 <- data.frame(v1,v2,v3)

我想将其更改为

我该怎么办。如果可能的话,请给我多种方法。谢谢。

推荐答案

您可以获取长格式的数据,然后删除空值。

library(dplyr)
library(tidyr)

gather(df1, variable, value) %>% filter(value != '')

#  variable value
#1       v1     A
#2       v1     B
#3       v1     C
#4       v2     E
#5       v2     G
#6       v3     B
#7       v3     C
#8       v3     D

但是,gather已停用,取而代之的是pivot_longer本身。

pivot_longer(df1, cols = everything(), names_to = 'variable') %>%
    filter(value != '')

您还可以使用data.table来执行此操作:

library(data.table)
melt(setDT(df1), measure.vars = names(df1))[value != '']

这篇关于从宽到长,并将名称合并为行名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆