相关疑难解决方法(0)

在data.table R中选择列的子集

我有一个包含一堆列的数据表,例如:

dt<-data.table(matrix(runif(10*10),10,10))
Run Code Online (Sandbox Code Playgroud)

我想对数据表执行一些操作,例如生成相关矩阵(cor(dt)).为此,我想删除一些包含非数字值或某个范围之外的值的列.

假设我想找到不包括V1,V2,V3和V5的相关矩阵.

这是我目前的做法:

cols<-!(colnames(dt)=="V1" | colnames(dt)=="V2" | colnames(dt)=="V3" | colnames(dt)=="V5")
new_dt<-subset(dt,,cols)
cor(new_dt)
Run Code Online (Sandbox Code Playgroud)

考虑到data.table语法通常很优雅,我发现这非常麻烦.有没有更好的方法呢?

r data.table

46
推荐指数
4
解决办法
9万
查看次数

动态分配/引用 data.table 中的列名(在 i、j 和 by 中)

A) 而不是这个 (where cars <- data.table(cars))

cars[ , .(`Totals:`=.N), by=speed]  
Run Code Online (Sandbox Code Playgroud)

我需要这个

strColumnName <- "Totals:"
cars [ , strColumnName = .N, by=speed]  
Run Code Online (Sandbox Code Playgroud)

怎么做?

B)类似(更一般的情况) - 而不是这个:

cars[ dist > 50, .(`Totals:`=.N, x=dist*100), by=speed] 
Run Code Online (Sandbox Code Playgroud)

我需要这个:

strFactor <- "dist"
cars[ strFactor > 50, .(`Totals:`=.N, x=strFactor*100), by=speed] 
Run Code Online (Sandbox Code Playgroud)

这个问题是关于在 data.table 中分配/引用列名变量的一般方法,即在“j”(RHS 和 LHS)以及“i”和“by”中 - 动态。当在代码中的其他地方选择时这是必需的(例如,用户我在闪亮的应用程序中输入它们)

C) 涉及 i,j 和 by 的一般情况 - 而不是这样:

 cars[ dist > 50, .(`Totals x Factor: ` = .N * dist), by=speed] 
Run Code Online (Sandbox Code Playgroud)

我需要这个:

strFactor <- "dist"; 
strNewVariable <- "Totals x …
Run Code Online (Sandbox Code Playgroud)

r data.table

4
推荐指数
1
解决办法
174
查看次数

标签 统计

data.table ×2

r ×2