我掙扎我如何能繼續我的資料幀只值之差中的元素measure是最小的2每個組中id1。這是一個玩具示例:
test = data.frame(measure = c(1, 2, 3, 2, 2, 4, 0, 1),
id1 = c("A", "B", "A", "B", "C", "C", "A", "D"),
id2 = c("16", "16", "16", "16", "17", "17", "17", "18"))
# > test
# measure id1 id2
# 1 1 A 16
# 2 2 B 16
# 3 3 A 16
# 4 2 B 16
# 5 2 C 17
# 6 4 C 17
# 7 0 A 17
# 8 1 D 18
#as result, I'd like something like
#> res
# measure id1 id2
# 1 1 A 16
# 3 3 A 16
# 5 2 C 17
# 6 4 C 17
# 7 0 A 17
在id1平等A和D地方去掉,因為他們的max(value) - min(value) < 2。
關于如何應用它的任何提示?
uj5u.com熱心網友回復:
另一種tidyverse選擇。
test %>%
group_by(id1) %>%
filter((max(measure)- min(measure)) >= 2)
uj5u.com熱心網友回復:
一個可能的解決方案:
library(tidyverse)
test = data.frame(measure = c(1, 2, 3, 2, 2, 4, 0, 1),
id1 = c("A", "B", "A", "B", "C", "C", "A", "D"),
id2 = c("16", "16", "16", "16", "17", "17", "17", "18"))
test %>%
group_by(id1) %>%
mutate(aux = (max(c_across(measure))- min(c_across(measure))) >= 2) %>%
ungroup %>% filter(aux) %>% select(-aux)
#> # A tibble: 5 × 3
#> measure id1 id2
#> <dbl> <chr> <chr>
#> 1 1 A 16
#> 2 3 A 16
#> 3 2 C 17
#> 4 4 C 17
#> 5 0 A 17
uj5u.com熱心網友回復:
data.table 結構在這里提供了一個選項。
# Load library
library(data.table)
# Create data.table
test <-
data.table(measure = c(1, 2, 3, 2, 2, 4, 0, 1),
id1 = c("A", "B", "A", "B", "C", "C", "A", "D"),
id2 = c("16", "16", "16", "16", "17", "17", "17", "18"))
# Solution:
test[id1 %in% test[, .(max(measure)-min(measure)), by=id1][V1>=2, id1]]
在這個解決方案中,test[, .(max(measure)-min(measure)), by=id1]給出了一個 data.table 的差異,并對其[V1>=2, id1]進行子集化并回傳一個有效 id1 值的向量。在id1 %in%隨后子集在該矢量中的內容的原始資料。
結果是:
measure id1 id2
1: 1 A 16
2: 3 A 16
3: 2 C 17
4: 4 C 17
5: 0 A 17
一個小型的 data.table 課程:
對于 data.tables,我們使用符號
DT[i, j, by],其中:DT是資料表i是對觀察的操作(例如過濾器、排序)j是對變數的操作(例如選擇、處理)by(andkeyby) 為j-operations提供分組
data.tables 有一些特殊字符,包括
.N對于“觀察次數”.SD對于“選定的變數”
安裝并加載 data.table 包以使用此結構。
使用
setDT()或將現有的 data.frame、list 或 tibble 轉換為 data.tabledata.table()用于
fread()將外部資料檔案直接讀入 data.table。
一個例子- 從 mtcars 獲取汽車的數量和平均燃油效率,其中 hp>100 和按氣缸數分組的匯總統計資料:
dtcars <- data.table(mtcars)
dtcars[hp>100, .("n" = .N, "mean_mpg" = mean(mpg)), keyby=cyl]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/360939.html
