【发布时间】:2020-07-14 12:58:33
【问题描述】:
我有一个data.table,如下:
panelID = c(1:50)
year = c(2001:2010)
country = c("NLD", "BEL", "GER")
urban = c("A", "B", "C")
indust = c("D", "E", "F")
sizes = c(1, 2, 3, 4, 5)
n <- 2
library(data.table)
set.seed(123)
DT <- data.table(
panelID = rep(sample(panelID), each = n),
country = rep(sample(country, length(panelID), replace = T), each = n),
year = c(replicate(length(panelID), sample(year, n))),
some_NA = sample(0:5, 6),
some_NA_factor = sample(0:5, 6),
industry = rep(sample(indust, length(panelID), replace = T), each = n),
urbanisation = rep(sample(urban, length(panelID), replace = T), each = n),
size = rep(sample(sizes, length(panelID), replace = T), each = n),
norm = round(runif(100)/10, 2),
sales = round(rnorm(10, 10, 10), 2),
Happiness = sample(10, 10),
Sex = round(rnorm(10, 0.75, 0.3), 2),
Age = sample(100, 100),
Educ = round(rnorm(10, 0.75, 0.3), 2)
)
DT [, uniqueID := .I] # Creates a unique ID
DT[DT == 0] <- NA
DT$sales[DT$sales< 0] <- NA
DT <- as.data.frame(DT)
我想要的是panelIDs 的数量,其中size 的总和等于8。所以我想我会这样做:
DT[sum(size)==8, condition:=1, by=panelID]
我在这里做错了什么?
【问题讨论】:
-
你需要这个吗:
DT[,conditional:=ifelse(sum(size)==8,1,0),by=panelID][]? -
好的,谢谢!比我想象的要复杂..
标签: r sum data.table conditional-statements