У меня есть data.table
в этом формате:
dt1 <- data.table(row_names=1:5, perf=c(2,NA,NA,3,NA), ticker=rep("aa",5))
dt2 <- data.table(row_names=1:5, perf=c(NA,1,2,5,NA), ticker=rep("aapl",5))
row_names perf ticker
1: 1 2 aa
2: 2 NA aa
3: 3 NA aa
4: 4 3 aa
5: 5 NA aa
row_names perf ticker
1: 1 NA aapl
2: 2 1 aapl
3: 3 2 aapl
4: 4 5 aapl
5: 5 NA aapl
У меня есть N
этих таблиц данных, и я хотел бы присоединиться к ним, чтобы я взял среднее значение perf
. Однако я не хочу этого делать, если для одной из таблиц данных существует значение NA
. В случае выше, я хотел бы получить data.table:
> res <- data.table(row_names=1:5,perf=c(2,1,2,4,NA),tickers=c("aa","aapl","aapl","aa,aapl",NA))
> res
row_names perf tickers
1: 1 2 aa
2: 2 1 aapl
3: 3 2 aapl
4: 4 4 aa,aapl
5: 5 NA NA
Я знаю, что мог бы сделать что-то подобное, чтобы получить средства с удаленными NA
:
rbind(dt1,dt2)[,list("perf"=mean(perf,na.rm=T)),by=row_names]
row_names perf
1: 1 2
2: 2 1
3: 3 2
4: 4 4
5: 5 NaN
Как мне установить условия для столбца tickers
, чтобы вставить их на основе конфликтующих NA
. Кроме того, является ли rbinding все data tables
наиболее эффективным способом выполнения функции mean
? Спасибо!