Основное дополнение в соответствии с приведенной ниже модой - PullRequest
0 голосов
/ 14 июня 2019

Я должен рассчитать оценки следующим образом.

ITEMS                   A   B   C   E   F   G   H   I   J   K
COLLECTION              10  10  10  10  10  10  10  10  10  10
FINAL CALCULATION           10  20  30  40  50  60  70  80  90

Здесь для A существует 10 коллекций предметов для первого раунда, окончательный расчет которых будет пустым, для B - его сбор 10, поэтому итоговый расчет будет 10, но затем для C - его предыдущий итоговый расчет и текущая коллекция. поэтому C = 10 + окончательный калибр B = 10 + 10 = 20

То же самое с D, 10 + 20 = 30, D = 30.

коллекция может меняться случайным образом, это просто строка, которая должна учитываться в df.

dput(df)
structure(list(X = structure(2:1, .Label = c("collection", "item"
), class = "factor"), V1 = structure(2:1, .Label = c("10", "A"
), class = "factor"), V2 = structure(2:1, .Label = c("20", "A"
), class = "factor"), V3 = structure(2:1, .Label = c("10", "A"
), class = "factor"), V4 = structure(2:1, .Label = c("20", "A"
), class = "factor"), V5 = structure(2:1, .Label = c("10", "A"
), class = "factor"), V6 = structure(2:1, .Label = c("20", "A"
), class = "factor"), V7 = structure(2:1, .Label = c("10", "A"
), class = "factor"), V8 = structure(2:1, .Label = c("10", "A"
), class = "factor"), V9 = structure(2:1, .Label = c("20", "A"
), class = "factor"), V10 = structure(2:1, .Label = c("20", "A"
), class = "factor")), class = "data.frame", row.names = c(NA, 
-2L))

my code : 
df <- data.frame(df)
df[2, ] <- c(NA, cumsum(unlist(df[1, 1:(ncol(df)-1)])))


Error: 
df[2, ] <- c(NA, cumsum(unlist(df[1, 1:(ncol(df)-1)])))
Error in Math.factor(unlist(df[1, 1:(ncol(df) - 1)])) :     
  ‘cumsum’ not meaningful for factors

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Если я правильно понял, то, что вы ищете, является кумулятивной суммой, но для первого значения должно быть число.

df <- data.frame(matrix(rep(10, 10), ncol= 10))

df[2, ] <- c(NA, cumsum(unlist(df[1, 1:(ncol(df)-1)])))

РЕДАКТИРОВАТЬ

Мне не нужно отвечать(10, 10).Смотрите здесь

set.seed(1)
df <- data.frame(matrix(sample(1:10, 5), ncol= 5))
df[2, ] <- c(NA, cumsum(unlist(df[1, 1:(ncol(df)-1)])))
df
  X1 X2 X3 X4 X5
1  3  4  5  7  2
2 NA  3  7 12 19
0 голосов
/ 14 июня 2019
# update columns to character
df = sapply(df, as.character)

# set as dataframe and keep the character columns values
df = data.frame(df, stringsAsFactors = F)

# add the new row at the bottom (using values from last row)
df[nrow(df)+1, ] <- as.character(c("FINAL CALCULATION", NA, cumsum(as.numeric(unlist(df[nrow(df), nrow(df):(ncol(df)-1)])))))

# view updated dataset
df

#                   X   V1 V2 V3 V4 V5 V6 V7  V8  V9 V10
# 1              item    A  A  A  A  A  A  A   A   A   A
# 2        collection   10 20 10 20 10 20 10  10  20  20
# 3 FINAL CALCULATION <NA> 10 30 40 60 70 90 100 110 130
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...