数据帧D1中的分类变量V1可以具有由A到Z的字母表示的值.我想创建子集D2,其排除一些值,例如B,N和T.基本上,我想要一个命令,即相反的 %in%
D2 = subset(D1, V1 %in% c('B','N',T'))
Run Code Online (Sandbox Code Playgroud) 从数据框中删除多个元素的最佳方法是什么?在我的情况下,我在数据框架中拥有该月的所有日期,并且想要删除几天.像下面这样的东西可以运行一天.
m[m$date!="01/31/11",]
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试类似的东西
m[m$date!=c("01/31/11","01/30/11"),]
Run Code Online (Sandbox Code Playgroud)
我收到一条警告信息
Warning message:
In `!=.default`(m$date, c("01/31/11", "01/30/11")) :
longer object length is not a multiple of shorter object length
Calls: [ ... [.data.frame -> Ops.dates -> NextMethod -> Ops.times -> NextMethod
Run Code Online (Sandbox Code Playgroud)
它似乎工作了两天,但如果我将01/29/11添加到矢量它显示所有日子,但是01/31/11.
我经常需要从data.frame中删除列列表.
我经常这样做:
to.remove <- c("hp","drat","wt","qsec")
mtcars[,-which(names(mtcars) %in% to.remove)]
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
但我希望能够以更清洁的方式使用subset.但它似乎附加了data.frame,然后将列名称作为变量而不是字符串来访问.
例如,这是我希望能够做到的:
subset(mtcars,select=-to.remove)
Run Code Online (Sandbox Code Playgroud)
有没有办法强制subset在select语句中使用字符串向量?还是有另一个更好的选择吗?
我有一个data.table查询的通用表单,我可以将我的数据子集化,只查看与%like%语句匹配的值,它看起来像
DT[Var %like% "x|y|z", .N,]
Run Code Online (Sandbox Code Playgroud)
并为一般运营商排除价值
i = x != "somevalue",
Run Code Online (Sandbox Code Playgroud)
如何将这些值组合起来忽略听起来像%某些值的值,并且仅返回与这些请求不匹配的集合.
这里的上下文是一个庞大的客户数据数据库,并试图删除不需要的数据,因此这个列表比我感兴趣的列表小得多.