通过要删除的行的多个逻辑条件来子集数据帧我想通过指定哪些行not(!)保留在新数据帧中来对数据帧进行子集化(过滤)。这是一个简化的示例数据帧:datav1 v2 v3 v4a v d ca v d db n p gb d d h c k d c c r p gd v d xd v d ce v d be v d c例如,如果列v1的一行有“b”,“d”或“e”,我想摆脱那一行观察,产生以下数据帧:v1 v2 v3 v4a v d ca v d dc k d c c r p g我一次成功地基于一个条件进行子集化。例如,在这里我删除v1包含“b”的行:sub.data <- data[data[ , 1] != "b", ]但是,我有很多这样的条件,所以一次做一个是不可取的。我没有成功完成以下任务:sub.data <- data[data[ , 1] != c("b", "d", "e")要么sub.data <- subset(data, data[ , 1] != c("b", "d", "e"))我也试过了其他一些东西,比如!%in%,但似乎并不存在。有任何想法吗?
3 回答

一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
您还可以通过包含&
分隔语句来将事物分解为单独的逻辑语句来实现此目的。
subset(my.df, my.df$v1 != "b" & my.df$v1 != "d" & my.df$v1 != "e")
这不是优雅的,需要更多代码,但对于较新的R用户可能更具可读性。正如上面的评论所指出的,subset
是一种“便利”功能,最适合在交互式工作时使用。
没有找到匹配的内容?试试慕课网站内搜索吧
- 3 回答
- 0 关注
- 490 浏览
添加回答
举报
0/150
提交
取消