小编rus*_*ser的帖子

在我自己的包中使用data.table包

我试图在我自己的包中使用data.table包.MWE如下:

我创建了一个函数test.fun,它只是创建一个小的data.table对象,然后将"Val"列分组为"A"列.代码是

test.fun<-function ()
{
    library(data.table)
    testdata<-data.table(A=rep(seq(1,5), 5), Val=rnorm(25))
    setkey(testdata, A)
    res<-testdata[,{list(Ct=length(Val),Total=sum(Val),Avg=mean(Val))},"A"]
    return(res)
}
Run Code Online (Sandbox Code Playgroud)

当我在常规R会话中创建此函数,然后运行该函数时,它按预期工作.

> res<-test.fun()
data.table 1.8.0  For help type: help("data.table")
> res
     A Ct      Total        Avg
[1,] 1  5 -0.5326444 -0.1065289
[2,] 2  5 -4.0832062 -0.8166412
[3,] 3  5  0.9458251  0.1891650
[4,] 4  5  2.0474791  0.4094958
[5,] 5  5  2.3609443  0.4721889
Run Code Online (Sandbox Code Playgroud)

当我将此函数放入包中时,安装包,加载包,然后运行该函数,我收到一条错误消息.

> library(testpackage)
> res<-test.fun()
data.table 1.8.0  For help type: help("data.table")
Error in `[.data.frame`(x, i, j) : object 'Val' not found
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释为什么会发生这种情况以及我可以做些什么来解决它.很感谢任何形式的帮助.

r data.table

73
推荐指数
2
解决办法
8368
查看次数

如何更改数组维度的顺序

如何重新排序n维数组的尺寸.例如,如果我有一个三维销售数据数组,其中第一个维度代表日期,第二个维度代表商店,第三个维度是部门.如何转换数组以使第一个维度为Store,第二个维度为Department,第三个维度为Date.这只是一个例子.我希望有一个普遍的解决方案.

r multidimensional-array

34
推荐指数
1
解决办法
1万
查看次数

要求样条曲线凸出

我需要将样条拟合到一组数据,并且结果函数需要单调递减和凸起.我传递给splinefun的数据保证具有这些属性,但这并不能保证得到的函数是凸的.有没有办法将样条拟合到一组数据并要求生成的函数是凸的?

r spline

9
推荐指数
1
解决办法
1454
查看次数

确定列值是否在data.table中是唯一的

我使用data.table来存储数据.我想弄清楚每行中的某些列是否唯一.我想在data.table中添加一个列,如果存在重复值,则将保留值"Duplicated Values",如果没有重复值,则为NA.我想要检查重复的列的名称存储在字符向量中.例如,我创建了我的data.table:

tmpdt<-data.table(a=c(1,2,3,4,5), b=c(2,2,3,4,5), c=c(4,2,2,4,4), d=c(3,3,1,4,5))
> tmpdt
   a b c d
1: 1 2 4 3
2: 2 2 2 3
3: 3 3 2 1
4: 4 4 4 4
5: 5 5 4 5
Run Code Online (Sandbox Code Playgroud)

我有另一个变量,指示我需要检查哪些列重复.重要的是,我能够将列名存储在字符向量中,而不需要"知道"它们(因为它们将作为参数传递给函数).

dupcheckcols<-c("a", "c", "d")
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

> tmpdt
   a b c d     Dups
1: 1 2 4 3     <NA>
2: 2 2 2 3 Has Dups
3: 3 3 2 1     <NA>
4: 4 4 4 4 Has Dups
5: 5 5 4 5 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

sas日期格式

我正在尝试编写一个简单读取SAS .sas7bdat数据文件并以文本格式输出的SAS脚本.我希望日期以YYYYMMDD格式输出.我不知道日期列的名称是什么.我的脚本目前是:

libname tmplib '~/testdatadir/';
OPTIONS MISSING='00'x;
data tmpdata;
set tmplib.testdatafile;
array flds{*} _NUMERIC_;
do i=1 to dim(flds);
  if missing(flds(i)) then flds(i)=.;
end;
array charflds{*} _CHARACTER_;
do i=1 to dim(charflds);
  if missing(charflds(i)) then charflds(i)=' ';
end;
drop i;
RUN;

PROC EXPORT
  DATA = tmpdata
  OUTFILE = 'testdataoutfile.txt'
  DBMS = TAB REPLACE;
  PUTNAME = YES;
RUN;
Run Code Online (Sandbox Code Playgroud)

我想要遍历所有日期字段(就像我使用NUMERIC字段和CHARACTER字段一样),或者为每个NUMERIC字段添加一个检查,测试它是否是日期(然后我可以更改格式),或添加一个选项PROC EXPORT表示输出日期格式.获取输出文件的日期格式为YYYYMMDD的任何其他方法也是可以接受的.

sas

2
推荐指数
1
解决办法
2159
查看次数

标签 统计

r ×4

data.table ×2

multidimensional-array ×1

sas ×1

spline ×1