R 将10列中的数据转换为一些行

R 将10列中的数据转换为一些行,r,dplyr,plyr,tidyr,R,Dplyr,Plyr,Tidyr,我有如下数据集:- a <- data.frame(X1="A", X2="B", X3="C", X4="D", X5="0", X6="0", X7="0", X8="0", X9="0", X10="0") 使用pivot\u longer函数,您可以将数据帧重塑为更长的格式,然后过滤为“0”的值。使用函数column\u to_rownamesfromtibble包,您可以将第一列作为rownames传递 总之,您可以这样做: library(ti

我有如下数据集:-

a <- data.frame(X1="A", X2="B", X3="C", X4="D", X5="0",
                X6="0", X7="0", X8="0", X9="0", X10="0")

使用
pivot\u longer
函数,您可以将数据帧重塑为更长的格式,然后过滤为“0”的值。使用函数
column\u to_rownames
from
tibble
包,您可以将第一列作为rownames传递

总之,您可以这样做:

library(tidyr)
图书馆(dplyr)
图书馆(tibble)
a%>%pivot\u更长(everythings(),names\u to=“Row”,values\u to=“b”)%%>%
过滤器(b!=“0”)%>%
列到行名称(“行”)
B
X1 A
X2 B
X3 C
X4 D

您可以
取消列表
,然后
子集

subset(data.frame(b = unlist(a), row.names = NULL), b != 0)

#  b
#1 A
#2 B
#3 C
#4 D

使用带有逻辑条件的转置和子集

 data.frame("b" = t(df1)[t(df1) != 0])
再看一眼,我就有机会玩代码了,您不需要转置

data.frame("b" = df1[df1 != 0])

data.frame(b=a[a!=“0”])
?我已经为您提供了以下问题的答案,如果这提供了解决方案,请检查“接受答案”按钮,如果没有,请澄清问题
data.frame("b" = df1[df1 != 0])