我需要获取数组的所有可能子集.
说我有这个:
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我怎么得到这个?
[], [1], [2], [1, 2], [2, 3], [1, 3], [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我对所有子集感兴趣.有关特定长度的子集,请参阅以下问题:
我有一个data.table
逻辑列.为什么逻辑列的名称不能直接用于i
参数?查看示例.
dt <- data.table(x = c(T, T, F, T), y = 1:4)
# Works
dt[dt$x]
dt[!dt$x]
# Works
dt[x == T]
dt[x == F]
# Does not work
dt[x]
dt[!x]
Run Code Online (Sandbox Code Playgroud) 我在子阵列,子序列和子集之间有点困惑
如果我有 {1,2,3,4}
然后
子序列可以是{1,2,4}
OR {2,4}
等.所以基本上我可以省略一些元素但保持顺序.
子阵列(比如3号子阵)
{1,2,3}
{2,3,4}
Run Code Online (Sandbox Code Playgroud)
那么子集是什么?
我对这3个人感到有点困惑.
假设我有一个data.table,我想选择变量x的值为b的所有行.这很容易
library(data.table)
DT <- data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
setkey(DT,x) # set a 1-column key
DT["b"]
Run Code Online (Sandbox Code Playgroud)
顺便说一句,似乎必须设置一个键,如果键没有设置为x,那么这不起作用.顺便说一句,如果我将两列设为键,会发生什么?
无论如何,继续前进,让我说我想选择变量x是a或b的所有行
DT["b"|"a"]
Run Code Online (Sandbox Code Playgroud)
不起作用
但以下工作
DT[x=="a"|x=="b"]
Run Code Online (Sandbox Code Playgroud)
但是,它使用矢量扫描数据帧.它不使用二进制搜索.我想对于较小的数据集来说无关紧要.
这是我应该做的还是我对data.table语法一无所知?
还有一件事.是否有任何更复杂的布尔多变量选择(或子集)过程的例子与data.table?
我知道我总是可以恢复使用subset()函数,因为如果必须,data.table将表现为data.frame.
我在data.table中有一个大型数据集,我想按日期范围进行分组.我的数据集如下所示:
testset <- data.table(date=as.Date(c("2013-07-02","2013-08-03","2013-09-04",
"2013-10-05","2013-11-06")),
yr = c(2013,2013,2013,2013,2013),
mo = c(07,08,09,10,11),
da = c(02,03,04,05,06),
plant = LETTERS[1:5],
product = as.factor(letters[26:22]),
rating = runif(25))
Run Code Online (Sandbox Code Playgroud)
我希望能够直接从选择的日期范围as.Date
列不使用yr
,mo
或da
列.目前,我正在进行mo
分组,有时非常笨重,尤其是在多年转换的时候.一种更优雅的方法可以让我的生活变得更加轻松.
提前致谢!
我有一个数据帧df
有一个ID列例如A
,B
等.我还有一个包含某些ID的向量:
L <- c("A", "B", "E")
Run Code Online (Sandbox Code Playgroud)
如何过滤数据框以仅获取向量中存在的ID?我会单独使用
subset(df, ID == "A")
Run Code Online (Sandbox Code Playgroud)
但是如何过滤整个矢量?
subset
如果我不知道要测试的列的名称,我想知道如何使用该函数.场景是这样的:我有一个Shiny应用程序,用户可以选择一个变量来过滤(子集)数据表.我从webapp接收列名作为输入,我想根据该列的值进行子集,如下所示:
subset(myData, THECOLUMN == someValue)
Run Code Online (Sandbox Code Playgroud)
除非双方THECOLUMN
和someValue
变数.是否有将所需列名称作为字符串传递的语法?
似乎想要一个作为列名的裸字,而不是一个包含列名的变量.
例如,我想根据名称的子集选择行
如果我有以下数据:
data <- structure(c(91, 92, 108, 104, 87, 91, 91, 97, 81, 98),
.Names = c("fee-", "fi", "fo-", "fum-", "foo-", "foo1234-", "123foo-",
"fum-", "fum-", "fum-"))
Run Code Online (Sandbox Code Playgroud)
如何选择匹配'foo'的行?
使用grep()不起作用:
grep('foo', data)
Run Code Online (Sandbox Code Playgroud)
收益:
integer(0)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?或者,还有更好的方法?
谢谢!
我有这样的数据,其中一些"名称"出现超过3次:
df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9)
name x
1 a 1
2 a 2
3 a 3
4 b 4
5 b 5
6 c 6
7 c 7
8 c 8
9 c 9
Run Code Online (Sandbox Code Playgroud)
我希望根据"name"变量的每个级别内的行数(观察值)对数据进行子集化(过滤).如果某个级别的"名称"出现超过3次,我想删除属于该级别的所有行.
我写了这段代码,但无法让它工作.
name x
1 a 1
2 a 2
3 a 3
4 b 4
5 b 5
Run Code Online (Sandbox Code Playgroud) 我一直在玩data.table
,我遇到了一个区别,我不确定我是否理解.给定以下数据集:
library(data.table)
set.seed(400)
DT <- data.table(x = sample(LETTERS[1:5], 20, TRUE), key = "x"); DT
Run Code Online (Sandbox Code Playgroud)
你可以向我解释以下表达方式之间的区别吗?
1) DT[J("E"), .I]
2) DT[ , .I[x == "E"] ]
3) DT[x == "E", .I]
subset ×10
r ×8
data.table ×4
dataframe ×2
arrays ×1
date-range ×1
grep ×1
javascript ×1
powerset ×1
r-faq ×1
select ×1
shiny ×1
slice ×1
subsequence ×1