Я новичок в stackoverflow, но не новичок в поиске проблем с моим R-скриптом.Это меня озадачило.
Я пытаюсь выяснить, почему мой текущий сценарий не работает:
СЦЕНАРИЙ: Мой пример - тиббл (называемый "Squishframe") из 13 столбцов (11 из них должны рассматриваться как символы и уникальные переменные; 2 из них должны быть числовыми).Я группирую по символьным столбцам и суммирую все остальные числовые столбцы, используя функции суммирования (и суммирования).Этот новый тиббл называется «Групповой кадр».
Основная проблема, как представляется, заключается в следующем:
- при наличии строки с уникальными переменными И числовыми данными,
- используется совместно с другой строкой с теми же уникальными переменными и пустыми числовыми данными,
строка с числовыми данными игнорируется!
#Create pipeline that first turns the Squishframe number columns into numeric type, and then groups the data by the Text-based columns
Groupedframe <- Squishframe %>%
mutate_at(vars(AF, Billable), funs(gsub("\\$", "", .))) %>%
mutate_at(vars(AF, Billable), funs(as.numeric)) %>%
group_by_at(vars(`File Name`, Source, Date, Colour, Size, MediumSource, Campaign, Version, Signed, CountryCode, State)) %>%
#Summarize all non-text-based columns by groups (sum function used)
summarize_all(funs(sum))
Если вы хотитев качестве примера - zip моих живых файлов, у меня они есть, но я не уверен, как предоставить их прямо сейчас.
Это немного отличается от моего выше, так как он импортируется из RawПапка с данными и помещает окончательный набор данных в выходную папку.
Ввод: в сценарии, приведенном выше, указывается фрагмент "Squishframe".Я также знаю, что некоторые из этих столбцов пусты.Это сделано намеренно:
structure(list(`File Name` = c("Bricks.csv", "Bricks.csv", "Bricks.csv",
"Bricks.csv", "Bricks.csv", "Bricks.csv", "Bricks.csv", "Bricks.csv",
"Bricks.csv", "Bricks.csv", "Bricks.csv", "Bricks.csv", "Bricks.csv"
), Source = c("Installations", "Installations", "Installations",
"Installations", "Installations", "Installations", "Installations",
"Installations", "Installations", "Installations", "Installations",
"Installations", "Installations"), Date = structure(c(17934,
17934, 17934, 17934, 17945, 17953, 17956, 17957, 17945, 17945,
17945, 17945, 17945), class = "Date"), Colour = c(NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), Size = c(NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), MediumSource = c("Baliest",
"Baliest", "Baliest", "Baliest", "Baliest", "Baliest", "Baliest",
"Baliest", "Klimt", "Klimt", "Klimt", "Klimt", "Klimt"), Campaign = c("Big Campaign Baliest",
"Big Campaign Baliest", "Big Campaign Baliest", "Big Campaign Baliest",
"Big Campaign Baliest", "Big Campaign Baliest", "Big Campaign Baliest",
"Big Campaign Baliest", "Big Campaign Klimt", "Big Campaign Klimt",
"Big Campaign Klimt", "Big Campaign Klimt", "Big Campaign Klimt"
), Version = c("Creative_V2", "Creative_V1", "Creative_V3", "Creative_V2",
"Creative_V1", "Creative_V3", "Creative_V2", "Creative_V1", "Creative_V1",
"Creative_V1", "Creative_V1", "Creative_V1", "Creative_V1"),
Signed = c("Tigle iOS", "Tigle iOS", "Tigle iOS", "Tigle iOS",
"Tigle iOS", "Tigle iOS", "Tigle iOS", "Tigle iOS", "200289",
"200289", "200289", "200289", "200289"), CountryCode = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), State = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), AF = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), Billable = c(NA,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, NA, NA, NA)), row.names = c(NA,
-13L), class = c("tbl_df", "tbl", "data.frame"))
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
Мой скрипт пытается сжать данные.Он должен объединять все числовые данные в строки, определенные ТОЛЬКО уникальными переменными.Другими словами, если в строке есть уникальные переменные, в этой строке должны храниться все числовые данные, а не исходное состояние, в котором имеется несколько строк с одинаковыми переменными.Я должен получить те же числовые итоги столбца, только с меньшим количеством строк.
Я должен получить результирующий кадр данных с суммой 8 в столбце «Оплачиваемый».И без дубликатов.
File Name Source Date Colour Size MediumSource Campaign Version Signed CountryCode State AF Billable
Bricks.csv Installations 2/7/2019 Baliest Big Campaign Baliest Creative_V1 Tigle iOS 1
Bricks.csv Installations 2/7/2019 Baliest Big Campaign Baliest Creative_V2 Tigle iOS 1
Bricks.csv Installations 2/7/2019 Baliest Big Campaign Baliest Creative_V3 Tigle iOS 1
Bricks.csv Installations 2/18/2019 Baliest Big Campaign Baliest Creative_V1 Tigle iOS 1
Bricks.csv Installations 2/18/2019 Klimt Big Campaign Klimt Creative_V1 200289 1
Bricks.csv Installations 2/26/2019 Baliest Big Campaign Baliest Creative_V3 Tigle iOS 1
Bricks.csv Installations 3/1/2019 Baliest Big Campaign Baliest Creative_V2 Tigle iOS 1
Bricks.csv Installations 3/2/2019 Baliest Big Campaign Baliest Creative_V1 Tigle iOS 1
ТЕКУЩИЙ РЕЗУЛЬТАТ: По большей части, это успешно.Но у меня есть случай, когда скрипт, который успешно суммирует все остальные строки, игнорирует некоторые.Это означает, что некоторые числовые данные полностью игнорируются, несмотря на совместное использование переменных с другой строкой.Это приводит к потере данных.Я получаю меньше строк, но итоги столбцов меньше.Пробелы отображаются в столбце «Оплачиваемый», где должны быть данные для этой уникальной комбинации переменных.Я не пытаюсь удалить эти пробелы, эти пробелы должны быть 1 с:
File Name Source Date Colour Size MediumSource Campaign Version Signed CountryCode State AF Billable
Bricks.csv Installations 2/7/2019 Baliest Big Campaign Baliest Creative_V1 Tigle iOS 1
Bricks.csv Installations 2/7/2019 Baliest Big Campaign Baliest Creative_V2 Tigle iOS
Bricks.csv Installations 2/7/2019 Baliest Big Campaign Baliest Creative_V3 Tigle iOS 1
Bricks.csv Installations 2/18/2019 Baliest Big Campaign Baliest Creative_V1 Tigle iOS 1
Bricks.csv Installations 2/18/2019 Klimt Big Campaign Klimt Creative_V1 200289
Bricks.csv Installations 2/26/2019 Baliest Big Campaign Baliest Creative_V3 Tigle iOS 1
Bricks.csv Installations 3/1/2019 Baliest Big Campaign Baliest Creative_V2 Tigle iOS 1
Bricks.csv Installations 3/2/2019 Baliest Big Campaign Baliest Creative_V1 Tigle iOS 1
Мне кажется, что суммирование пробела + 1 в этих случаях = пробел.Это должно быть 1. Текущий оплачиваемый столбец суммирует 6 вместо 8, как и должно быть.
Спасибо всем за ваше время!Я благодарен за любые отзывы о моем сценарии и моих методах написания этого поста.Если это может быть улучшено каким-либо образом, я открыт для этого!