Я пытаюсь обобщить (принять среднее значение) различных столбцов на основе одного столбца в таблице данных.data.table дает NA при суммировании по столбцам
Вот игрушка пример моих данных и код, который я использовал, который показывает проблема, у меня:
library(data.table)
a<- data.table(
a=c(1213.1,NA,113.41,133.4,121.1,45.34),
b=c(14.131,NA,1.122,113.11,45.123,344.3),
c=c(101.2,NA,232.1,194.3,12.12,7645.3),
d=c(11.32,NA,32.121,94.3213,1223.1,34.1),
e=c(1311.32,NA,12.781,13.2,2.1,623.2),
f=c("A", "B", "B", "A", "B", "X"))
a
setkey(a,f) # column "f" is what I want to summarize columns by
a[, lapply(.SD, mean), by=f, .SDcols=c(1:4)] # I just want to summarize first 4 columns
Выход последней строки:
> a[, lapply(.SD, mean), by=f, .SDcols=c(1:4)]
f a b c d
1: A 673.25 63.6205 147.75 52.82065
2: B NA NA NA NA
3: X 45.34 344.3000 7645.30 34.10000
Почему данные B NA
? Не следует ли игнорировать NA
при вычислении среднего значения? Я думаю, что нашел аналогичную проблему here, но, возможно, это совсем другое и/или у меня есть синтаксис.
Если это невозможно в data.table
, я открыт для других предложений.
Игнорирование 'NA's, вам нужен аргумент' na.rm = true'. Попробуйте 'a [, lapply (.SD, mean, na.rm = TRUE), by = f, .SDcols = c (1: 4)]' – ialm
ah. так просто. можете ли вы написать это? Я дам вам очки – Prophet60091