【发布时间】:2020-05-14 13:13:08
【问题描述】:
我有一个数据表,我使用数据表的j 部分的ifelse() 命令进行子集化。我想计算这个子集中的观察次数(而不是整个组的观察)。如果我使用i 部分,没问题:
library("data.table")
set.seed(1234)
testdata <- data.table(x= rnorm(10),
id= rep(c("a","b"), each =5))
testdata[x > 0, newvari := .N, by= id]
testdata
x id newvari
1: -1.2071 a NA
2: 0.2774 a 3
3: 1.0844 a 3
4: -2.3457 a NA
5: 0.4291 a 3
6: 0.5061 b 1
7: -0.5747 b NA
8: -0.5466 b NA
9: -0.5645 b NA
10: -0.8900 b NA
但是,如果我使用 j,则该组由其总大小决定(很可能是因为我没有在 i 和 .N 中设置子集)。
x id newvari newvarj
1: -1.2071 a NA NA
2: 0.2774 a 3 5
3: 1.0844 a 3 5
4: -2.3457 a NA NA
5: 0.4291 a 3 5
6: 0.5061 b 1 5
7: -0.5747 b NA NA
8: -0.5466 b NA NA
9: -0.5645 b NA NA
10: -0.8900 b NA NA
有没有办法在j 中使用ifelse() 语句来获取newvari?
编辑:我现在无法完全回忆起在j 中进行子集化的非常重要的原因。我只想说我的实际代码太乱了,我不想再把它拆开。 ;) 我希望这可能对其他人有用,作为一种选择。
【问题讨论】:
标签: r if-statement data.table