Я хочу создать новую строку на основе всех других ячеек в существующем R-кадре данных.Вот существующий R-фрейм данных с именем "dat1".
dat1 <- structure(list(a = c(0.80, -0.72, 1.36, 1.57, -0.58),
b = c(-1.39, 0.66, -0.01, 1.24, 1.19),
c = c(0.35, 0.44, 0.32, 1.90, -0.11),
d = c(-0.09, -1.26, 1.14, -0.37, 0.95),
e = c(0.59, 0.05,-1.08, 1.44, 0.58),
weight = c(3.2, 4.3, 5.6, 3.4, 5.2)),
row.names = c(NA, -5L), class = "data.frame")
«данные» содержат пять строк и пять столбцов.Я хочу создать шестую строку.
data[6,1] = data[1,1]*data[1,6]+data[2,1]*data[2,6]+data[3,1]*data[3,6]+data[4,1]*data[4,6]+data[5,1]*data[5,6]
data[6,2] = data[1,2]*data[1,6]+data[2,2]*data[2,6]+data[3,2]*data[3,6]+data[4,2]*data[4,6]+data[5,2]*data[5,6]
data[6,3] = data[1,3]*data[1,6]+data[2,3]*data[2,6]+data[3,3]*data[3,6]+data[4,3]*data[4,6]+data[5,3]*data[5,6]
data[6,4] = data[1,4]*data[1,6]+data[2,4]*data[2,6]+data[3,4]*data[3,6]+data[4,4]*data[4,6]+data[5,4]*data[5,6]
data[6,5] = data[1,5]*data[1,6]+data[2,5]*data[2,6]+data[3,5]*data[3,6]+data[4,5]*data[4,6]+data[5,5]*data[5,6]code here
data[6,6] = NA
Вот что я пробовал:
Метод 1
data[6,1] <- data[1,1]*data[1,6]+data[2,1]*data[2,6]+data[3,1]*data[3,6]+data[4,1]*data[4,6]+data[5,1]*data[5,6]
data[6,2] <- data[1,2]*data[1,6]+data[2,2]*data[2,6]+data[3,2]*data[3,6]+data[4,2]*data[4,6]+data[5,2]*data[5,6]
data[6,3] <- data[1,3]*data[1,6]+data[2,3]*data[2,6]+data[3,3]*data[3,6]+data[4,3]*data[4,6]+data[5,3]*data[5,6]
data[6,4] <- data[1,4]*data[1,6]+data[2,4]*data[2,6]+data[3,4]*data[3,6]+data[4,4]*data[4,6]+data[5,4]*data[5,6]
data[6,5] <- data[1,5]*data[1,6]+data[2,5]*data[2,6]+data[3,5]*data[3,6]+data[4,5]*data[4,6]+data[5,5]*data[5,6]
data[6,6] <- NA
Я также пытался метод 2:
data1 <- data[1:5,1:5]
Затем создайте новый фрейм данных с именем data2:
for (i in 1:5) {
for (j in 1:5) {
data2[i, j] <- data1[i, j] * data[j, 6]
}
}
Затем создайте новую строку
newrow <- colSums(data2)
Затем окончательные данные3
data3 <- rbind(data1,newrow)
Я обнаружил, что результаты были разными для метода 1 и 2. Поскольку мой истинный набор данных намного больше, чем «данные».Я надеюсь, что кто-то может помочь мне с простым способом вычислить новый ряд.
Заранее спасибо.