如何解决宽到长,将列名更改为行名
我有一张桌子,像这样:
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 != '']
,
您可以使用内置函数t()
df2 <- data.frame(t(df1))
colnames(df2) <- row.names(df1)
df2
1 2 3
v1 A B C
v2 E G
v3 B C D
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。