簡體   English   中英

根據給定行中的觀察結果選擇data.table列的子集

[英]Select subset of data.table columns based on observations in a given row

我有類似的數據:

DT <- data.table(name=c("a","b","c","total"),measure1=c(1,1,1,3),
                 measure2=c(1,1,2,4),measure3=c(2,2,2,6),measure4=c(3,3,3,9))

    name measure1 measure2 measure3 measure4
1:     a        1        1        2        3
2:     b        1        1        2        3
3:     c        1        2        2        3
4: total        3        4        6        9

我想選擇name列以及最后一行( name列中的“總計”)大於5的所有列。所需的輸出是這樣的:

    name measure3 measure4
1:     a        2        3
2:     b        2        3
3:     c        2        3
4: total        6        9

謝謝你的幫助。

收集,傳播,收集tidyverse方法:

library(dplyr)
library(tidyr)

DT %>% 
  gather(key,val,-name) %>% 
   spread(name,val) %>% 
   filter(total>5) %>% 
   gather(name,val,-key) %>% 
   spread(key,val)
   name measure3 measure4
1     a        2        3
2     b        2        3
3     c        2        3
4 total        6        9

感謝@akrun和@Jaap在上面的評論中使用data.table發布他們的答案。 兩者都可以完美地工作,並且是很好的解決方案,兩者之間在風格上有所不同。 為了完整起見,以下是兩個答案:

DT[, DT[.N][, c(TRUE,.SD > 5), .SDcols = -1], with = FALSE]

DT[, .SD, .SDcols = DT[name == "total", c(TRUE, .SD > 5), .SDcols = -1]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM