![](/img/trans.png)
[英]R // count rows and sum col value if multiple conditions in other columns of a data.table are met // efficient & fast data.table solution
[英]In R data.table conditionally remove rows based on elements in other columns with multiple conditions
如何根據 data.table 中的行刪除 data.table 中的行? 可重現的例子:
library(data.table)
DT = data.table(
Subject = rep(c("A", "B"), 4:3),
Test = rep(c("TEST_A","TEST_B"), 4:3),
Folder = rep(c("D1", "Screen"), 4:3),
Date = as.Date(
sprintf("10-%02d-%02d", c(22:25, 25:27), rep(1:2, 4:3)),
'%m-%d-%y'
)
)
DT[Test == "TEST_A", Date := "na"]
這是我的邏輯:對於每個 SUBJECT 刪除 TEST_A 和文件夾“D1”沒有日期但 TEST_B 和文件夾“屏幕”有日期的所有行。 我知道我可以只寫一個 if 語句,但我試圖只使用 data.table 來保持它的可讀性。
如果我正確理解您的問題,您想刪除日期值為NA
的行。 如果是這種情況,那么下面的答案應該有效。
請注意,我對data.table
不太熟悉,所以我必須先將DT
轉換為dataframe
。
library(dplyr)
# Convert to a dataframe
DT_df = as.data.frame(DT)
# Drop rows with NAs
DT_df = DT_df %>% drop_na()
# Convert back to a data.table
DT_New = as.data.table(DT_df, TRUE)
Output:
dput(DT_df)
structure(list(Subject = c("B", "B", "B"), Test = c("TEST_B",
"TEST_B", "TEST_B"), Folder = c("Screen", "Screen", "Screen"),
Date = structure(c(11985, 11986, 11987), class = "Date")), index = structure(integer(0), "`__Test`" = integer(0)), class = "data.frame", row.names = c(NA,
-3L))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.