#r #loops
Вопрос:
У меня есть файл с данными о доставке товаров в магазин.Мне нужно рассчитать общее количество товаров в магазине. Я хочу использовать знания циклов для расчета общего количества товара в магазине, но мой цикл учитывает только общее количество последнего товара. Почему? Вот данные о доставке:
"Day" "Cott.cheese, pcs." "Kefir, pcs." "Sour cream, pcs."
1 104 117 119
2 94 114 114
3 105 107 117
4 99 112 120
5 86 104 111
6 88 110 126
7 95 106 129
Я поместил эту таблицу в переменную in1
Вот код:
s<-0
for (p in (2:ncol(in1))){
s<-sum(in1[,p]) }
s
Ответ №1:
Не уверен, что я правильно понял ваш вопрос, но если вы хотите добавить только все значения вашего data.frame, кроме первого столбца (День), вам просто нужно это сделать:
sum(in1[,-1])
Комментарии:
1. Я принес одну таблицу, и если у меня 10 таблиц, то все эти действия должны быть автоматизированы циклами. Ваш метод верен, но мне нужно немного другое
2. @sjr_25 поместите все свои фреймы данных в список, затем:
lapply(myDataframes, sum)
Ответ №2:
Вы переписываете переменную s каждую итерацию, поэтому она показывает результат только для последнего столбца. Попробуйте
s<-c()
for (p in 2:ncol(in1)) {
s<-c(s,sum(in1[,p]))
}
альтернативно
colSums(in1[,-1])
Комментарии:
1. Первый вариант не очень удобен, и если я хочу получить результат, то есть общее количество товаров, умноженное на некоторую переменную(их цену), и получить окончательный ответ, а не вектор значений
2. @sjr_25 Я не понимаю. Можете ли вы отредактировать свой вопрос с точным ожидаемым результатом? Каков ваш фактический желаемый результат?
3. @user2974951 Ваши методы дают вектор значений: 671 770 836 , но мне нужна сумма этих трех чисел, то есть одно конечное число: 2277. Я думаю, вам просто нужно использовать функцию sum