gpt4 book ai didi

r - 用 dplyr 或 R 中的其他包进行子集化

转载 作者:行者123 更新时间:2023-12-04 11:03:57 25 4
gpt4 key购买 nike

所以我们有这些基本数据

A <- c(1,1,1,2,2,2,3,3,3)
B <- c(1,0,0,1,0,0,1,0,0)
C <- c(2,2,3,4,3,3,3,4,3)
Data <- data.frame(A,B,C)

现在我们要过滤它

我们查看 C=3 和 B=1 的每种情况并找到它的值使用此 A 值,我们要搜索 C=4 和 B=0 并将其删除

如此图形化,

enter image description here

我们要删除红色行并保留绿色行

理想情况下,我想使用 dplyr,但对其他替代方案持开放态度

最佳答案

Base R,我想这就是你需要的:

# Column A values to consider for filter
C3_B1 <- Data[Data$C==3 & Data$B==1,"A"]

# Filter out rows where C==4 and B==0
Data[ !(Data$A %in% C3_B1 &
Data$C==4 &
Data$B==0),]

# Output - row 8 is removed
# A B C
# 1 1 1 2
# 2 1 0 2
# 3 1 0 3
# 4 2 1 4
# 5 2 0 3
# 6 2 0 3
# 7 3 1 3
# 9 3 0 3

使用 sqldf 包:

sqldf(c("DELETE FROM Data 
WHERE A IN (SELECT A FROM Data
WHERE C = 3 AND B = 1)
AND C = 4
AND B = 0",
"SELECT * FROM Data "))

关于r - 用 dplyr 或 R 中的其他包进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29966419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com