[英]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.