小编Jep*_*sen的帖子

数据表开头的新列

我可以向 data.table 添加一个新列,如下所示:

DT = data.table(A=sample(3, 10, TRUE), 
         B=sample(letters[1:3], 10, TRUE), C=sample(10))

DT[, new:=1:10]
Run Code Online (Sandbox Code Playgroud)

但是有没有一种聪明的方法将其设置为 data.table 的开头?- 我知道我可以用 setcolorder 来做到这一点,但我想避免这种情况。

setcolorder(DT, c("new", "A", "B", "C"))
Run Code Online (Sandbox Code Playgroud)

r calculated-columns addition data.table

6
推荐指数
1
解决办法
3812
查看次数

在sweave,xtable中,只旋转一些列名

让我们说我想在s​​weave中制作一张桌子,像这样:

<<tab2.1 , results = "asis", echo=FALSE, warning=FALSE>>=
library(xtable)
df <- data.frame(Fish=1:5, Bird=11:15)

rownames(df) <- 2013:2017

print(xtable(df),
      rotate.colnames = TRUE)
@
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在,我想在FishBird的年代和左边的自由空间中拥有情节的标签,但没有旋转.我尝试查看xtable手册,但它没有显示如何只旋转一些列名.

r rotation xtable

5
推荐指数
1
解决办法
330
查看次数

使用sum,length和grep聚合data.table

让我们做一个data.table:

dt <- data.table(x.1=1:8, x.2=1:8, x.3=2:9, vessel=rep(letters[1:2], each=4), Year=rep(2012:2015, 2))
dt
   x.1 x.2 x.3 vessel Year
1:   1   1   2      a 2012
2:   2   2   3      a 2013
3:   3   3   4      a 2014
4:   4   4   5      a 2015
5:   5   5   6      b 2012
6:   6   6   7      b 2013
7:   7   7   8      b 2014
8:   8   8   9      b 2015
Run Code Online (Sandbox Code Playgroud)

我可以使用函数长度和总和来汇总它,以获得每年所有x的总和以及每年独特船只的总和,如下所示:

dt[, 
            list(
  x.1=sum(x.1),
  x.2=sum(x.2),
  x.3=sum(x.3),
  vessels=length(unique(vessel))),
    by=list(Year=Year)]

   Year x.1 x.2 x.3 vessels
1: 2012   6 …
Run Code Online (Sandbox Code Playgroud)

grep aggregate r data.table

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

数据框中基于if的唯一行

我有一个大型数据表(数百万行),我需要将行减少到每个ID一个.规则是,如果"X"之外的其他艺术作为唯一ID,则应删除X'.但如果唯一身份证中没有其他艺术品,则X应保留.

测试数据集:

dt <- data.table(
  ID=c(1,1,1,2,2,3,4,4),
  art=c("X", "Y", "X", "X", "X", "X", "Z", "X"),
  redskb=c("a", "Y", "a", "b", "b", "c", "k", "n")
)

   ID art redskb
1:  1   X      a
2:  1   Y      Y
3:  1   X      a
4:  2   X      b
5:  2   X      b
6:  3   X      c
7:  4   X      k
8:  4   Z      n
Run Code Online (Sandbox Code Playgroud)

所需输出:

    ID art redskb
1:  1   Y      Y   
2:  2   X      b
3:  3   X      c
4:  4   Z      n
Run Code Online (Sandbox Code Playgroud)

我试过了

unique(dt, …
Run Code Online (Sandbox Code Playgroud)

if-statement r data.table

0
推荐指数
1
解决办法
57
查看次数