我的数据集如下:-
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
您可以先按unlist
,然后按subset
subset(data.frame(b = unlist(a), row.names = NULL), b != 0)
# b
#1 A
#2 B
#3 C
#4 D
使用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