0
我有一個跨多個列具有相同因子值的數據框,我想根據每行中某一列的值數對數據進行排序/子集。基於跨列的相同因子值排序數據幀
df <- data.frame(a = factor(c("yes", "yes", "no", "maybe"),
levels = c("yes", "no", "maybe")), b = factor(c("maybe", "yes", "yes", "no"),
levels = c("yes", "no", "maybe")), c = factor(c("maybe", "yes", "yes", "no"),
levels = c("yes", "no", "maybe")), d = c(1,2,3,4))
df
a b c d
1 yes maybe maybe 1
2 yes yes yes 2
3 no yes yes 3
4 maybe no no 4
我想根據每行的所有列出現「yes」次數來對數據進行排序/子集。因此,將「是」出現2次或更多次的所有行(df2
),然後(不太重要)根據此排序,其中具有最多「是」值的行位於頂部。如果保留原始行號,這並不重要。
df2
a b c d
2 yes yes yes 2
3 no yes yes 3
df
a b c d
2 yes yes yes 2
3 no yes yes 3
1 yes maybe maybe 1
4 maybe no no 4
我想過使用order()
功能:
df[order(df$a,df$b,df$c), ]
但這並不返回我想要的。我想我需要使用lapply()
,但我不確定使用什麼功能。