将10列的数据转换为某些行

问题描述 投票:0回答:2

我的数据集如下:-

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

基本上是1行X 10列data.frame。

所得的data.frame应该将a的列元素作为行而不是列。并且a中等于"0"的任何列都不应出现在新的data.frame中。对于前。 -

#          b
#     [1]  A
#     [2]  B
#     [3]  C
#     [4]  D
r dplyr plyr tidyr
2个回答
1
投票

您可以先按unlist,然后按subset

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

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

0
投票

使用pivot_longer功能,您可以将数据框重整形为更长的格式,然后过滤为“ 0”的值:

library(tidyr)
library(dplyr)


a %>% pivot_longer(everything(), names_to = "Row", values_to = "b") %>%
  filter(b != "0")

# A tibble: 4 x 2
  Row   b    
  <chr> <fct>
1 X1    A    
2 X2    B    
3 X3    C    
4 X4    D   
© www.soinside.com 2019 - 2024. All rights reserved.