从宽到长,并将名称合并为行名 [英] wide to long and col name into row name
本文介绍了从宽到长,并将名称合并为行名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个表格,如下所示:
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屋!
查看全文